我在 Java 中存储多个输入值时遇到问题。首先,我使用 ArrayList 来存储用户输入的输入数量。然后我想在收集所有输入后进行计算。
我的程序允许用户输入 1 到 5 之间的 5 个不同值。 1 等于 100, 2 等于 200, 3 等于 300, 4 等于 400, 5 等于 500
我创建一个数组来存储这些值
double numberArray[] = {100, 200, 300, 400, 500};
当用户输入1时,ArrayList将存储第一个输入的值。 当用户输入2时,ArrayList将存储第二个输入值,依此类推。 当用户点击“n”时,它将退出并进行加法。这意味着它将 100 和 200 加在一起,输出将等于 300。
但是,问题是当用户继续输入数字时,即使我输入 2 作为第二个输入,我的程序也只会将第一个输入的总和加起来,即 100 + 100。
这是我的代码:
import java.util.*;
public class Total{
static int total;
public static void main(String[] args) {
int numberArray[] = {100, 200, 300, 400, 500};
List<String> list = new ArrayList<String>();
Scanner input = new Scanner(System.in);
do{
System.out.println("Add item? Please enter \"y\" or \"n\"");
if (input.next().startsWith("y")){
System.out.println("Enter item number: ");
list.add(input.next());
if (list.contains("1")){
int item1 = numberArray[0];
total = total + item1;
} else if(list.contains("2")){
int item2 = numberArray[1];
total = total + item2;
} else if(list.contains("3")){
int item3 = numberArray[2];
total = total + item3;
} else if(list.contains("4")){
int item4 = numberArray[3];
total = total + item4;
} else {
System.out.println("You have entered invalid item number!");
break;
}
}else{
System.out.println("You have entered all the item(s).");
break;
}
} while(true);
System.out.println(The total is: " + total);
}
}
最佳答案
考虑一下当我运行该程序时会发生什么。
第一次运行:我回答'y'
;并输入1
。 list.contains("1")
计算结果为 true
。一切都很好,total=100
。
第二次运行:我回答'y'
;并输入2
。但是,list.contains("1")
的计算结果仍然为 true
- 哎呀!明明应该加200,却又加了100。事实上,每次下一次运行都会添加 100,因为从现在开始 list.contains("1")
将始终为 true。
不要使用列表来存储用户输入,而是使用 String
变量。更好的是,考虑使用 input.nextInt()
,并在表中查找值。
此外,您忘记了“5”的大小写。
关于java - Java中无法存储多个输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12793227/