【问题标题】:Changing input variables in a java loop在 java 循环中更改输入变量
【发布时间】:2016-05-04 10:06:37
【问题描述】:

我有一个任务,我需要使用循环来允许用户在程序中输入十个不同的数字,然后将变量相加。

我找到了各种代码,并将它们拼接在一起创建了这个:


import javax.swing.*;
import java.util.Scanner;

public class exercise6
{
   public static void main (String []args)
   {

     //Input

      String totalNum, num1, num2, num3, num4, num5, num6, num7, num8, num9, num10;

       Scanner in = new Scanner (System.in);
       System.out.println("Please enter ten numbers:");
       int[] inputs = new int[10];

       for (int i = 0; i < inputs.length; ++i)
         {
            inputs[i] = in.next();
         }

      //Process
      totalNum = num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8 + num9 + num10;

      //Output
      JOptionPane.showMessageDialog(null, "Total = " + totalNum);


   }
}

这不是很好,但这是我迄今为止最好的。请帮忙?

【问题讨论】:

  • 您是否使用了变量 num1 ... num10?另外,当您已经创建了一个数组来存储输入时,为什么还要使用它们。

标签: java for-loop math addition


【解决方案1】:

您不需要变量 num1 到 num10。您可以简单地总结循环本身。喜欢:

int sum = 0;
for (int i = 0; i < 10; i++) {
    sum += = in.next(); // sum = sum + in.next();
}

此外,您将变量分配为字符串,但您需要 int。在您的情况下,如果输入始终为 1,它将打印类似 1111111111 的内容。

看看here你将如何正确处理整数。

【讨论】:

    【解决方案2】:

    您可以通过两种方式实现这一点,或者在循环本身中添加数字,或者如果您需要跟踪它们以供以后使用,只需将它们添加到数组中。

    导入 javax.swing.*; 导入 java.util.Scanner;

    public class exercise6
    {
       public static void main (String []args)
       {
    
          String total;
    
           Scanner in = new Scanner (System.in);
           int numOfInputValues = 10;
           System.out.println("Please enter ten numbers:");
           int[] inputs = new int[numOfInputValues];
    
           for (int i = 0; i < numOfInputValues; ++i)
             {
                // Append to array only if you need to keep track of input
                inputs[i] = in.next();
                // Parses to integer
                total += in.nextInt();
             }
    
          //Output
          JOptionPane.showMessageDialog(null, "Total = " + totalNum);
       }
    }
    

    【讨论】:

      【解决方案3】:

      首先,你的类应该是 CamelCase。第一个字母总是大写。

      其次,您不需要数组来保存这些数字。

      第三,您应该创建一个可以轻松更改的全局变量。这是一个很好的做法。

      而且你应该总是关闭像 Scanner 这样的流对象,因为它们会泄漏内存。

      import java.util.Scanner;
      
      public class Exercise6 {
      public static void main(String[] args) {
      
          int numberQuantity = 10;
      
          int totalNum = 0;
      
          Scanner in = new Scanner(System.in);
          System.out.println("Please enter ten numbers:");
      
          for (int i = 0; i <= numberQuantity; i++) {
      
              totalNum += in.nextInt();
      
          }
          in.close();
          System.out.println(totalNum);
      
          }
      }
      

      【讨论】:

        【解决方案4】:

        所以我找到的最简单的答案是:

        import javax.swing.*;
        import java.util.Scanner;
        
        public class exercise6
        {
           public static void main (String []args)
           {
        
             //Input
        
              int totalNum, num1;
              totalNum = 0;
        
                 for (int numbers = 1 /*declare*/; numbers <= 10/*initialise*/; numbers ++/*increment*/)
                 { 
                         num1 = Integer.parseInt(JOptionPane.showInputDialog("Input any number:"));
                         totalNum = totalNum + num1;
                 }
        
        
        //Output
              JOptionPane.showMessageDialog(null, "Total = " + totalNum);
        

        【讨论】:

          【解决方案5】:

          试试这个方法我只重新编辑你的代码:

          import javax.swing.*;
          
          public class InputNums {
          
              public static void main(String[] args) {
                  int total = 0;
          
                  for (int i = 0, n = 0; i < 10;) {
                      boolean flag = false;
          
                      try {
                          n = Integer.parseInt(JOptionPane
                                  .showInputDialog("Input any number:"));
                      } catch (NumberFormatException nfe) {
                          flag = true;
                      }
                      if (flag) {
                          flag = false;
                          JOptionPane.showMessageDialog(null,
                                  "Invalid no Entered\nEnter Again...");
                          continue;
                      }
                      total += n;
                      i++;
                  }
          
                  JOptionPane.showMessageDialog(null, "Total = " + total);
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2017-08-05
            • 1970-01-01
            • 2015-10-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多