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循环,一般用于输出数组。
还有,你写得程序,规范性真的很差,可读性很低,建议先养成规范性的编写,这很重要。
rate[n]=r.nextDouble();//这句话有错,n表示数组的大小,数组的下标值是0到n-1之间,不能是n。
另外,Scanner capital=new Scanner(System.in);//这个语句只需要定义一次就可以了,其他的输入都可以用capital。
把题目写出来、、、看看。