Java | |数组元素在varArr[i]=varInt之后设置为0

Java | |数组元素在varArr[i]=varInt之后设置为0,java,Java,我希望我能充分描述这一点 该计划的作用: 程序的这一部分检查哪些项目可供购买,显示这些项目,然后询问用户他们想要购买哪些项目。然后询问他们想要购买多少商品,并将该数字添加到整数数组中,其中数组索引对应于商品名称的索引(因此名称和数量存储在两个数组中,但按索引对齐)。在数组中输入整数后,循环将再次开始要求购买某个项目,直到用户输入“finish”,这将停止循环。另一种方法使用该整数数组生成收据 我的问题是: 当需要在数组中输入整数时,我会立即将该数组打印到控制台,然后得到这个结果 例如,第一个循环

我希望我能充分描述这一点

该计划的作用: 程序的这一部分检查哪些项目可供购买,显示这些项目,然后询问用户他们想要购买哪些项目。然后询问他们想要购买多少商品,并将该数字添加到整数数组中,其中数组索引对应于商品名称的索引(因此名称和数量存储在两个数组中,但按索引对齐)。在数组中输入整数后,循环将再次开始要求购买某个项目,直到用户输入“finish”,这将停止循环。另一种方法使用该整数数组生成收据

我的问题是: 当需要在数组中输入整数时,我会立即将该数组打印到控制台,然后得到这个结果

例如,第一个循环将“10”添加到索引“1”中

element at index '0' = 0
element at index '1' = 10
element at index '2' = 0
element at index '3' = 0
然后,第二个循环将“20”添加到索引“3”中

element at index '0' = 0
element at index '1' = 0
element at index '2' = 0
element at index '3' = 20
我的问题是,为什么索引“1”恢复为“0”

我所期望的是: 我希望整数一直添加到数组中。使用上面的示例,完成第二个循环后,我期望得到以下结果

element at index '0' = 0
element at index '1' = 10
element at index '2' = 0
element at index '3' = 20
守则: 编辑:添加此块的其余部分以满足最小的、可复制的示例。
do {
    System.out.println(saleMenu);
    String[] availArray = new String[stockName.length];
    for (int i = 0; i < stockLevel.length; i++) {
        if (stockLevel[i] > 0) {
            availArray[i] = stockName[i];
        }
    }
    for (int i = 0; i < availArray.length; i++) {
        System.out.println(availArray[i]);
    }
    System.out.println("\nType 'finish' to generate a receipt.");
    soldItems = new int[availArray.length];
    System.out.println(saleMenu2);                                      // Display menu.
    String input = console.nextLine().toLowerCase();                    // Get input.
    if (!(input.contains("finish"))) {                                  // If input not "finish".
        for (int i = 0; i < availArray.length; i++) {                   // Loop through availableArray
            if (availArray[i].equals(input)) {                          // If stock present.
                available = true;                                       // Set available flag.
                index = i;                                              // Grab the index.
            }
        }
        if (available == false) {                                       // If input not available.
            System.out.print("That is not an option. Try again.\n");    // Display error.
        }
        if (available == true) {                                        // If input available.
            available = false;                                          // Reset available flag.
            System.out.println("How many would you like to purchase?"); // Display message.
            amountInput = console.nextInt();                            // Get input.
            console.nextLine();                                         // Capture stray \n
            if (amountInput < 0) {                                      // Is input < 0.
                System.out.println("\nSorry, the number must be positive.");    // Display error.
            } else
                if (!(amountInput == 0)) {                              // If input not 0.
                    soldItems[index] += amountInput;                    // Add input to array at 
                                                                        // 'index' grabbed above.
                }
                else
                    System.out.println("\nNothing added.");             // If input 0, display error.
            for (int i = 0; i < soldItems.length; i++) {                                // Debugging
                System.out.println("sldItems at index '" + i + "' " + soldItems[i]);    // Debugging.
            }
        }
    } else
        finishedSale = true;
} while (finishedSale == false);
processSale(soldItems, stockLevel);
System.out.print(continueOption);
continueYN = console.nextLine().toLowerCase().charAt(0);
if (continueYN == 'y') {
    mainMenuSelect = 0;
}
break;
do{
System.out.println(菜单);
String[]availArray=新字符串[stockName.length];
对于(int i=0;i0){
availArray[i]=股票名称[i];
}
}
for(int i=0;i
do{
// [...]
soldItems=新整数[availArray.length];
// [...]
}while(finishedSale==false)
在每次迭代中都要重置数组。每次购买之后,数组都会被擦除并新实例化——包含零。将实例化移到循环之外


顺便说一句,与其说是
finishedSale==false
,不如说是编写
!finishedSale

在该代码的开头,您创建一个新数组
soldItems
(包含所有零),并在接近结尾时更新该数组的一个元素。在该代码中,
soldItems
不可能有多个非零元素。您的代码不完整。如图所示,您只能购买单个项目。你至少错过了这个循环。这不是一个正确的循环。@khelwood是我在其中一个循环中创建了新数组
soldItems
的问题吗?是否应该在代码顶部的开始处作为一个整体进行实例化?@Polygenme我在该块的其余部分添加了一个实例。我将致力于使它更小,使它更“最小”。谢谢。如果你想在循环的多次迭代中保留数组中的信息,你需要在循环之前而不是在循环期间创建数组。