用Java代码实现海洋能源应用经济效益排行的设计与实现
时间: 2023-10-23 19:11:50 浏览: 156
以下是用Java代码实现海洋能源应用经济效益排行的设计与实现的示例:
```java
import java.util.*;
public class OceanEnergyRanking {
public static void main(String[] args) {
// 输入数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入项目数量:");
int n = sc.nextInt();
double[][] data = new double[n][4];
System.out.println("请依次输入项目的投资成本、维护成本、收益和项目名称:");
for (int i = 0; i < n; i++) {
for (int j = 0; j < 4; j++) {
data[i][j] = sc.nextDouble();
}
sc.nextLine();
data[i][3] = i + 1; // 将项目编号存入数组
}
// 计算指标
for (int i = 0; i < n; i++) {
data[i][4] = data[i][2] / (data[i][0] + data[i][1]); // 计算成本效益比
data[i][5] = data[i][2] / (1 + 0.1 * data[i][1]) - data[i][0]; // 计算净现值
data[i][6] = calculateIRR(data[i][0], data[i][1], data[i][2]); // 计算内部收益率
}
// 排序
Arrays.sort(data, new Comparator<double[]>() {
@Override
public int compare(double[] o1, double[] o2) {
if (o1[4] > o2[4]) { // 按成本效益比从大到小排序
return -1;
} else if (o1[4] < o2[4]) {
return 1;
} else {
return 0;
}
}
});
// 输出排行榜
System.out.println("项目排行榜:");
System.out.println("项目编号\t投资成本\t维护成本\t收益\t成本效益比\t净现值\t内部收益率\t项目名称");
for (int i = 0; i < n; i++) {
System.out.printf("%d\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\t\t%s\n", (int)data[i][3], data[i][0], data[i][1], data[i][2], data[i][4], data[i][5], data[i][6], sc.nextLine());
}
}
// 计算内部收益率
public static double calculateIRR(double investment, double maintenance, double income) {
double[] cashFlow = new double[11];
cashFlow[0] = -investment;
for (int i = 1; i < 11; i++) {
cashFlow[i] = income - maintenance * i;
}
double irr = 0.1;
double npv = 0;
while (true) {
npv = 0;
for (int i = 0; i < 11; i++) {
npv += cashFlow[i] / Math.pow(1 + irr, i);
}
if (Math.abs(npv) < 0.001) {
break;
}
irr += 0.01;
}
return irr;
}
}
```
上述代码实现了输入项目数量及各项指标数据,计算指标并排序,最后输出排行榜的功能。其中,成本效益比、净现值和内部收益率的计算都采用了相应的函数进行实现。
阅读全文