【问题标题】:Int array pushed through while loop until it reaches -1Int 数组推入 while 循环,直到达到 -1
【发布时间】:2022-01-25 19:04:25
【问题描述】:

我必须获取一行用户输入,然后使用 while 循环计算所有数字的平均值,直到它达到 -1。用户输入的示例可能类似于 2 -1 6 这就是我这样做的原因。我已经想出了如何将其拆分为一个 int 数组,但我不知道如何执行 while 循环部分。

System.out.println("user input")
String user = scan.nextLine();
String[] string = user.split(" ");
int[] numbers = new int[string.length];
for(int i = 0;i < string.length;i++) {
    numbers[i] = Integer.parseInt(string[i]);
}
while ( > -1){
            
}

【问题讨论】:

    标签: java arrays while-loop


    【解决方案1】:

    java.util.Scanner 有方法hasNextIntnextInt

    import java.util.Scanner;
    
    public class Averages {
    
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            System.out.println("Enter series of integers on single line separated by spaces.");
            System.out.println("For example: 2 -1 6");
            int sum = 0;
            int count = 0;
            while (scan.hasNextInt()) {
                int num = scan.nextInt();
                if (num == -1) {
                    break;
                }
                sum += num;
                count++;
            }
            if (count > 0) {
                double average = sum / (double) count;
                System.out.println("Average: " + average);
            }
            else {
                System.out.println("Invalid input.");
            }
        }
    }
    

    请注意,在计算平均值时,您需要将 count 转换为双精度值,否则将执行整数除法并且不会给出正确的平均值。

    【讨论】:

      【解决方案2】:

      我假设您的意思是,当用户输入数字为 -1 时。我们应该取-1之前的所有数字的平均值。那就是我在这里做的。

      System.out.println("user input")
      String user = scan.nextLine();
      int totalSum = 0;
      double avg = 0;
      
      String[] string = user.split(" ");
      int[] numbers = new int[string.length];
      for(int i = 0;i < string.length;i++) {
          numbers[i] = Integer.parseInt(string[i]);
          if(numbers[i]==-1){
              avg = (double)totalSum / i;
              break;
          }
          totalSum += numbers[i]; 
      }
      

      只有while循环

      System.out.println("user input");
      String user = scan.nextLine();
      int totalSum = 0;
      double avg = 0;
      
      String[] string = user.split(" ");
      int[] numbers = new int[string.length];
      int i = 0;
      numbers[i] = Integer.parseInt(string[i]);
      while(numbers[i]!=-1) {
          totalSum += numbers[i];
          i++;
          numbers[i] = Integer.parseInt(string[i]); 
      }
      avg = (double)totalSum / i;
      

      【讨论】:

        【解决方案3】:
        import java.util.Scanner; 
        
        public class Main
        {
            public static void main(String[] args) {
                
                Scanner scan = new Scanner(System.in); 
                System.out.println("user input");
                String user = scan.nextLine();
                boolean found = false;
                Double average = 0.0;
                
                
                String[] string = user.split(" ");
                int[] numbers = new int[string.length];
                for(int i = 0;i < string.length && found == false ;i++) {
                    numbers[i] = Integer.parseInt(string[i]);
                }
                int t = 0;
                while (found == false && t < string.length){
                      if(numbers[t] == - 1){
                        average = average/t;
                        found = true;
                      }
                      else{
                            average = (Double) average + numbers[t];
                            t++;
                          }            
                }
                System.out.println("Average = " + average);
        
            }
        }
        

        【讨论】:

        • 你能贴出所有的代码吗?我的意思是,也请声明扫描?
        • 一点也不,如果我让你这样的话,我真的很抱歉。我昨天没有编译器,所以我无法检查我的错误。我修改了我的代码,它似乎工作正常
        猜你喜欢
        • 2021-01-28
        • 2021-09-21
        • 1970-01-01
        • 2020-07-31
        • 2020-09-29
        • 2021-05-17
        • 1970-01-01
        • 2021-03-20
        • 2015-10-02
        相关资源
        最近更新 更多