java - Java中无法存储多个输入值

标签 java arrays arraylist

我在 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';并输入1list.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/

相关文章:

java - JProgressBar 在 Swing 中加载数据

java - 如何使用 Join 定义 JPA 存储库查询?

java - 如果我的批处理文件路径中有空格,为什么会出现错误?

c++ - 打印字符串数组长度而不是 C++ 中的数组项数

arrays - 如何从核心数据保存的数组中快速获取特定值

java - 如果数组中多个值匹配,如何获取值的最后一个索引号?

java - 在初始化时使用尽可能少的内存在枚举常量中存储对任意类的引用的最佳方法是什么?

c++ - 有人知道 char a [' ' ] 吗?

java - 将 ArrayList 的内容写入文本文件

Java ArrayList - 值,而不是从 ArrayList 中删除的项目