gpt4 book ai didi

java - 错误 : ArrayOutOfBounds. 如何解决?

转载 作者:行者123 更新时间:2023-12-02 11:10:59 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How can I avoid ArrayIndexOutOfBoundsException or IndexOutOfBoundsException? [duplicate]

(2 个回答)


6年前关闭。




我已经编写了这个程序,但在编译时遇到了逻辑错误。获取 index.arrayOutOfBounds?

我的输入是 1, 2, 6, 10对于产品的选择和一致的输出应该是

Total items ordered: 3
Price of items ordered: $747.00
Sales Tax: $48.55
Total amount due: $795.55

我的 for 循环条件或计算中是否存在错误,或者导致此输出的数组是否存在错误?
import java.util.Scanner;
public class GrapefruitOrderingArray {

//Declare Constants
public static final int SIZE = 100;
public static final int[] itemPrices = {49,299,329,399,199,1299,1199,999,599};

public static void main(String[] args) {
// Declare Variables
Scanner input = new Scanner (System.in);
String CustomerName;
int[] naNumber = new int [SIZE];
int nProducts = 0;
double nTotal = 0;
double dFinalPrice = 0.0;
int nCount = 0;

//Declare Constants
final int SENTINEL = 10;
final double SALES_TAX = 0.065;

//Prompt user to enter name
System.out.println("Please enter your name: ");

//Enter user name
CustomerName = input.nextLine();

System.out.println("");

//Begin Product Listing Declarations with respect to array above
System.out.println("GRAPEFRUIT PRODUCT:");
System.out.println("1. gPod shuffle $" + itemPrices[0]);
System.out.println("2. gPod Touch $" + itemPrices[1]);
System.out.println("3. gPad Mini $" + itemPrices[2]);
System.out.println("4. gPad 2 $" + itemPrices[3]);
System.out.println("5. gPhone $" + itemPrices[4]);
System.out.println("6. gMac $" + itemPrices[5]);
System.out.println("7. MacNovel Pro $" + itemPrices[6]);
System.out.println("8. MacNovel Air $" + itemPrices[7]);
System.out.println("9. MiniMac $" + itemPrices[8]);
System.out.println("10. Complete my order");

//Keep reading until the input is terminated by sentinel
System.out.println("\nPlease select an item from the menu above: ");

//Read number entered by the user
naNumber[nCount] = input.nextInt();

//Begin while-loop statement
while (naNumber[nCount] != SENTINEL) {

System.out.println("\nPlease select another item from the menu above: ");

nCount++;

//Read number entered by the user
naNumber[nCount] = input.nextInt();
}

System.out.println("Thank you for ordering with Grapefruit Company, " + CustomerName);
//Call final price calculation
dFinalPrice = calculateTotalPrice(naNumber,itemPrices,nTotal);

//Print blank line to screen
System.out.println("");

//Total amount of product ordered
System.out.println("Total items ordered: " + nCount );

//Total price of items ordered
System.out.println("Price of items ordered: $" + dFinalPrice );

//Sales tax associated with the purchase
System.out.println("Sales tax: $" + SALES_TAX * dFinalPrice );

//Total amount due by the customer to Grapefruit Co.
System.out.println("Total amount due: $" + (SALES_TAX * dFinalPrice + dFinalPrice ));
} //End main method

private static double calculateTotalPrice(int[] naNumber, int[] itemPrices) {

double total = 0;

//Calculate entered items
for(int i = 0; i < naNumber.length; i++){
if(naNumber[i] != 0) {
total += itemPrices[naNumber[i] - 1];
}
}

return total;
}
} //end class calculateTotalPriceOfItemsOrdered

最佳答案

你的问题是因为在你的循环结束后你有 naNumber[nCount] == 10;然后在 calculateTotalPrice您正在尝试访问 total += itemPrices[9];这是超出范围的

快速解决方案:在您的 while 之后添加 naNumber[nCount] = 0;
但是您必须考虑如果用户输入了 100 多个产品,您的应用程序会做什么?

关于java - 错误 : ArrayOutOfBounds. 如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19528214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com