我正在做一个程序作为练习,我希望能够修复一个双精度类型值数组。
我无法解决的问题:”
public int T [] = new int [i];”。
作为错误:“参数T的非法修改”。
import java.util.Scanner;
public class CC {
public static void main(String[] args) {
Scanner tastiera = new Scanner(System.in);
String comando;
comando = tastiera.next();
double soldiconto, uscita, entrata;
int i = 0;
soldiconto = 0;
entrata = 0;
uscita = 0;
public int T[] = new int[i];
while (i < 365) {
System.out.println("v - versamento");
System.out.println("p - prelievo");
System.out.println("s - saldo");
System.out.println("l - lista movimenti");
System.out.println("x - exit");
if (comando.equals("v")) { System.out.println("Quanto vuoi versare?");
entrata = tastiera.nextInt();
soldiconto = soldiconto + entrata;
T[T.length-1] = entrata;
}
if (comando.equals("p")) { System.out.println("Quanto vuoi prelevare?");
uscita = tastiera.nextInt();
soldiconto = soldiconto - uscita;
T[T.length-1] = -uscita;
}
if (comando.equals("s")) { System.out.println("Saldo: " + soldiconto);
}
if (comando.equals("l")) { System.out.println("Lista degli ultimi 5 movimenti:");
System.out.println(T[T.length-5]);
System.out.println(T[T.length-4]);
System.out.println(T[T.length-3]);
System.out.println(T[T.length-2]);
System.out.println(T[T.length-1]);
}
if (comando.equals("x")) {
System.out.println("Uscita..... ");
break;
}
i++;
}
}
}
我希望能够查看数组的最后5个单元格,但是它不允许我更改单个单元格的值。
最佳答案
您要修复的行是正确的。这是您遇到问题的那条线:
T[T.length-1] = entrata;
因为
entrata
是double类型,而T[T.length-1]
是int
。因此,应将entrata
定义为int
而不是double
。另一个问题是
i
为0,因此您有一个包含0个元素的数组,并为其分配任何值将导致ArrayIndexOutOfBoundsException
。您可能想给i
一个不同的值。