【问题标题】:How to output multiple numbers at once in a for loop using Java如何使用Java在for循环中一次输出多个数字
【发布时间】:2023-03-28 00:20:01
【问题描述】:

我对 Java 编程非常陌生(2 周),目前正在练习数组。

我的代码如下:

import java.util.Scanner;

public class LA2_2_1 {
    public static void main (String[] args)
    {
        Scanner scan = new Scanner(System.in);
        int x;
        double avg;
        double num = 0;

        System.out.print("Enter the number of items: ");
        x = scan.nextInt();

        int [] numbers = new int [x];
        double sum = 0;
        sum = sum + num;    

        for (int index = 0; index < numbers.length; index++)
        {
            System.out.print("Enter the numbers: ");
            num = scan.nextDouble();
            sum = sum + num;
            System.out.println(sum);
        }
        avg = sum/x;
        System.out.println("The average is " + avg);        
    }
}

输出:

Enter the number of items: 10

Enter the numbers: 3.4 5 6 1 6.5 7.8 3.5 8.5 6.3 9.5

3.4

Enter the numbers: 8.4

Enter the numbers: 14.4

Enter the numbers: 15.4

Enter the numbers: 21.9

Enter the numbers: 29.7

Enter the numbers: 33.2

Enter the numbers: 41.7

Enter the numbers: 48.0

Enter the numbers: 57.5

The average is 5.75

我的问题是,我怎样才能格式化代码以使"Enter the numbers" 只出现一次?我只想让程序询问用户他们想要输入的一系列数字。我不希望它输出多个“输入数字”。

我认为这可能与 for 循环中的输出有关,但我并不太肯定。我试着把它拿出来,“输入数字”的平均值和输出都变成了0.0

任何意见都会有所帮助。

谢谢

【问题讨论】:

  • 不清楚。每次您的代码调用 printl 时,都会打印一些内容。因此,只需删除循环中的 printl 语句即可防止打印输出。但是:用户如何知道他应该输入另一个数字?

标签: java arrays eclipse loops output


【解决方案1】:

只需将您的 for 循环从

for (int index = 0; index < numbers.length; index++)
{
    System.out.print("Enter the numbers: ");
    num = scan.nextDouble();
    sum = sum + num;
    System.out.println(sum);
}

System.out.print("Enter the numbers: ");
for (int index = 0; index < numbers.length; index++)
{
    num = scan.nextDouble();
    sum = sum + num;
}
System.out.println(sum);

【讨论】:

  • 谢谢!这行得通!我想这是我输入代码的结构,我会记住这一点。再次感谢您!
【解决方案2】:

每次运行for 循环时仔细查看您的代码,它会打印出该行

 System.out.print("Enter the numbers: ");

与您设置的数字数量一样多,在本例中为 10。

为了解决这个问题,您需要在 for 循环之前添加 System.out.print("Enter the numbers: ");

【讨论】:

    【解决方案3】:

    很简单,只需将输入提示语句放在for循环之外:

    System.out.print("Enter the numbers: ");
    
    for (int index = 0; index < numbers.length; index++)
    {
            num = scan.nextDouble();
            sum = sum + num;           
    }
    System.out.println(sum); // sum print statement outside loop to get total sum
    

    【讨论】:

    • 这行得通。我将不得不更多地练习我的结构。谢谢!
    【解决方案4】:

    只需将 print 语句移到循环之外即可。请也试试这个工作链接http://rextester.com/live/ZDRYM2149

    class Rextester
    {  
        public static void main (String[] args)
        {
            Scanner scan = new Scanner(System.in);
            int x;
            double avg;
            double num = 0;
    
            System.out.print("Enter the number of items: ");
            x = scan.nextInt();
    
            int [] numbers = new int [x];
            double sum = 0;
            sum = sum + num;    
            System.out.print("Enter the numbers: ");
            for (int index = 0; index < numbers.length; index++)
            {
                num = scan.nextDouble();
                sum = sum + num;
            }
            System.out.println("The sum is " + sum);
            avg = sum/x;
            System.out.println("The average is " + avg);
    
        }
    }
    

    【讨论】:

      【解决方案5】:

      如果您真的在学习数组,请考虑我的回答,因为在您的代码中您没有使用数组

      public static void main(String args[])
          {
              //sb object for getting the actual int
              StringBuilder sb = new StringBuilder("");
              Scanner scan = new Scanner(System.in);  
              int x;
              //this is for the array element of numbers e.g. numbers[y]
              int y=0;
      
              double sum=0;
              double avg;
              System.out.print("Enter the number of items: ");
              x = scan.nextInt();
              //please add the scan.nextLine that is why you are getting 
              scan.nextLine();
              double[] numbers=new double[x];
              System.out.print("Enter the numbers followed by space:");
              String numberEntered=scan.nextLine();
      
              for(int i=0;i<numberEntered.length();++i)
              {
                  //everytime loop iterate new sb with empty value is created
                  sb=new StringBuilder("");
                      while(i<numberEntered.length()&&numberEntered.charAt(i)!=' ')
                      {
                          //get the actual String integer not containing space
                          sb.append(numberEntered.charAt(i));
                          ++i;
                      }
                      //convert the String actual integers to integer
                  numbers[y]=Double.parseDouble(sb.toString());
                  //increment y for the array element of numbers
                      ++y;    
              }
              //get the sum using foreach loop containing the array of numbers
              for(double myNumbers:numbers)
              {
                  sum+=myNumbers;
              }
      
              avg=sum/x;
              System.out.println("The average is " + avg);
      
      
      
      
          }
      

      【讨论】:

        猜你喜欢
        • 2020-09-16
        • 1970-01-01
        • 1970-01-01
        • 2021-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多