java代码运行异常,请高手指点! 做的一个银行利率和年份之间的关系,输入利率的时候出现了代码异常!

2024-12-12 16:55:30
推荐回答(3个)
回答1:

1.Scanner不需要new这么多次,new一个后都能调用。
2.rate[n]=r.nextDouble();有问题,nextDouble();只能接收一次输入,前面的rate[n]如果要指整个数组就不能加[ ],所以应该用循环。
3.System.out.println()不能输出一个数组,也应该用循环。
4.array[0][i]=c;这行没问题,有问题的是前面的i修改后的代码为:
import java.util.Scanner;

public class Java {
public static void main(String[] args) {
int c;
int y;
int n;
double[ ] rate;
double[ ][ ] array;

Scanner sc=new Scanner(System.in);
System.out.println("请输入本金:"); //输入本金
c=sc.nextInt();
System.out.println("请输入年数:"); //查询需要的年数
y=sc.nextInt();
System.out.println("请输入利率种类数:"); //读取利率
n=sc.nextInt();
System.out.println("请输入利率:");
rate=new double[n];
for (int i = 0; i < n; i++)
rate[i]=sc.nextDouble();
array=new double[y][n];

System.out.println("year"+" ");
for (double i : rate)
System.out.println(i+" ");
for (int i = 0; i < array[0].length; i++) {
array[0][i]=c;
for(int j = 0; j < rate.length; j++) {
array[i][j] = c*Math.pow(1 + rate[j], i);
System.out.print(" "+i+" "+array[i][j]+" ");
}
System.out.println();
}
}
}

for (double i : rate)
System.out.println(i+" ");
这个是加强型的for循环,一般用于输出数组。
还有,你写得程序,规范性真的很差,可读性很低,建议先养成规范性的编写,这很重要。

回答2:

rate[n]=r.nextDouble();//这句话有错,n表示数组的大小,数组的下标值是0到n-1之间,不能是n。
另外,Scanner capital=new Scanner(System.in);//这个语句只需要定义一次就可以了,其他的输入都可以用capital。

回答3:

把题目写出来、、、看看。