【问题标题】:Storing results存储结果
【发布时间】:2013-01-06 17:07:24
【问题描述】:

我正在使用 Java 做一些作业,这是我应该做的。 给定一个整数X,您应该阅读X 行,每行包含一个字符串和两个整数值xy

**Input**
2 <-- Read 2 lines
PLUS 10 30 <-- PLUS refers to adding 30 to 10
MINUS -6 20 <-- MINUS refers to minus 20 from -6
**Output**
40 
-26

如何存储值 40 和 -26? 我目前正在使用一个数组。代码如下。

for(int i = 0; i < limit; i++)
{
    String limitInput = sc.next();
    x = sc.nextInt();
    y = sc.nextInt();
    if(limitInput.equals("PLUS"))
    {
        System.out.println(x+y);
        limitArray[i] = x + y;
    }
    else if(limitInput.equals("MINUS"))
    {
        limitArray[i] = x - y;
    }
    else
    {
        limitArray[i] = x * y;
    }
}

有没有更简单的方法,比如不使用数组?

【问题讨论】:

  • 您可以使用开关,但我会写出对您来说最简单和最清晰的内容。您可以评论为什么只打印 x+y 以及为什么默认运算符是乘法。
  • 请注意,使用 switch on 字符串仅在 SE 7
  • 数据的存储如何?是否可以在不使用数组的情况下存储数据?我正在考虑将数据存储到一个整数中,但该整数值将在循环中被覆盖。 =/
  • 如果您提前知道要处理多少行,为什么不使用数组呢?这就是它们的用途:您需要具有预定长度的事物列表的情况。如果您真的想摆脱数组,那么我想您可以使用 ArrayList。
  • 嗯...除了使用 Array、ArrayList、Vectors 等数据结构之外,还有更简单的方法来存储数据吗?

标签: java data-structures store


【解决方案1】:

对于您的情况,不要认为有比数组更简单的数据结构。如果要将结果与操作/行号一起存储;会建议你使用 HashMap。 但是你; map 绝对不比数组简单。

 Map<Integer,Integer> map = new HashMap<Integer,Integer>();
 int line = 1; //read line number
 int result= 40;  //read final result
 map.put(line, result); 

这样你就可以通过迭代地图得到每一行的结果。

但是如果你还想存储你已经执行的操作;然后会建议像这样使用multimap

 Map<Integer, ArrayList<String>> map = new HashMap<Integer, ArrayList<String>>();
 ArrayList<String> a = new ArrayList<String>(); 
 a.add("PLUS"); //add operation
 a.add(result); //add result

 map.put(line, a);

从列表中读取值时;只需确保将值(位于位置 1)解析为 int,并将其存储为 String。

【讨论】:

    猜你喜欢
    • 2019-02-04
    • 2018-08-17
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 2022-11-25
    • 2017-11-04
    • 1970-01-01
    相关资源
    最近更新 更多