我正在做一个程序作为练习,我希望能够修复一个双精度类型值数组。
我无法解决的问题:”
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一个不同的值。

10-07 19:46
查看更多