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