【问题标题】:Iterate over an ArrayList appending values based on user input根据用户输入迭代 ArrayList 附加值
【发布时间】:2015-07-17 09:20:36
【问题描述】:

我正在尝试编写一种方法,用于根据用户输入一次更改 ArrayList 中所有对象的值。用户通过对话框输入一个值,然后将其转换为整数并分配给一个值。

该列表称为 studentList 并填充有 Student 对象。这些对象有一个名称和一个称为 Result 的 int 值。我目前的问题是我在对话框中的第一个输入值一次添加到所有变量中,并且任何后续输入都没有效果。我需要的是第一个条目更改第一个对象的值,然后通过列表移动到下一个对象并请求用户的另一个输入,依此类推。

我正在使用定制的 Dialog.request 导入框架来获取用户输入。只需考虑这些行意味着将出现一个弹出对话框并请求用户以字符串形式输入

这是我的方法,它在一个名为 Group 的类中

public void recordResult()
   {
      int inputResult; 
      String inputString;
      inputString = Dialog.request("Please Enter A Result");
      inputResult = Integer.parseInt(inputString);


         for(Student s : studentList)
         {
             s.setResult(inputResult);
             inputString = Dialog.request("Please Enter Another Result");
         }

   }

我认为问题在于 for 循环。

我已尝试排除任何不必要的代码,并仅包含我尝试实现的方法。其他假设 setResult 方法存在于 Student 类中,并且填充了 studentList。在此先感谢,我希望这只是一个小调整

【问题讨论】:

    标签: java list arraylist iteration


    【解决方案1】:

    该行为是预期的,因为 inputResult 仅根据第一个 inputString 计算一次。您应该将对话请求放入循环中,如下所示:

     public void recordResult()
     {
      int inputResult; 
      String inputString = null;
    
      for(Person : aList)
      {  
         if (inputString == null) {
            inputString = Dialog.request("Please Enter A Result");
         } else {
            inputString = Dialog.request("Please Enter Another Result");
         } 
         inputResult = Integer.parseInt(inputString);
         s.setResult(inputResult);
      }
    
    }
    

    【讨论】:

    • 谢谢托尼,看起来不错。但是我没有收到错误variable inputString might not have been initialized 有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 2021-04-17
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多