如何让数组打印用户输入、存储小计、乘以税和总计



我需要获取用户的项目数量,价格,并像收据一样打印价格。接下来,我必须打印出小计、tax = .07和总计。

我尝试使用 for 循环来获取要添加到数组中的信息。我现在已经尝试了 while 循环。

Scanner sc = new Scanner(System.in);
double SubTot = 0;
//double numItmes = 0;
int numItems = Integer.parseInt(JOptionPane.showInputDialog("Enter the number of items: "));
double[] items = new double[numItems];
items[numItems] =  Double.parseDouble(JOptionPane.showInputDialog("Enter the prices: "));
double i = 0;
while(i<numItems){
items[numItems]= sc.nextInt();
i++;
}
System.out.println("Here is the current list: n" + Arrays.toString(items));
// double total = 0;
//double tax = 0.07;
JOptionPane.showMessageDialog(null,"The Sub Total is: " + SubTot + "The Tax is" + tax + "n The Totoal is" + total);
}

>

我的问题是让添加的数组在连续的行中吐出。此外,我的税款没有添加到我的总额中,也没有乘以小计。它继续将小计过帐为 0 税为 .07,总计为 0。我应该怎么做?

*第一次使用Java用户。新程序员。欢迎建设性批评

欢迎来到 Stackoverflow!很高兴你开始编码 - 这是一项很棒的技能。

因此,当您尝试访问不存在的数组索引时,会发生 ArrayIndexOutOfBounds 异常。当您将数字(->双精度("10"放入数组中时,您的数组如下所示: [10] 它不会在数组中放置 10 个元素。此外,数组从零开始。这意味着,第一个元素的索引是0,第二个元素的索引是 1,依此类推。当数组大小为 10 时,最高索引为 9。

For 和 While 循环几乎做同样的事情。

附带说明:虽然 Stackoverflow 用于解决代码问题,但鼓励搜索有关该问题的现有条目,并且通常对您自己来说速度更快。谷歌搜索异常的名称(ArrayIndexOutOfBounds(是一个好的开始:)

编辑:

为了澄清这一点:

double[] items = new double[5];

items[5] 仍将抛出 ArrayIndexOutOfBounds 异常,因为数组是基于空的(您可以在 while 循环中尝试(。如果要遍历数组,请尝试 items[i] - 每次迭代 1 (i++( 时,i 值都会发生变化。

最新更新