【问题标题】:Continuous Loop until Condition is met连续循环,直到满足条件
【发布时间】:2016-09-27 17:22:42
【问题描述】:

所以我必须在 Eclipse 中为我的班级创建一个 java 项目。任务是创建一个程序,允许用户在程序中输入整数,直到输入某个整数 (42)。输入整数 (42) 后,程序将 1。平均输入的所有数字。 2。显示输入的最小和最大数字。 3。输入的数字总数。这些必须在不计算 (42) 的情况下计算。这就是我到目前为止所拥有的。我可以从用户那里获得输入,一旦他们输入 42,程序就会停止并显示总数,但包括 42。而且我不确定如何为输入添加“计数”,以便我可以使用计数来显示输入的总数以及将计数从总和中除以得出平均值。我很感激任何帮助。

package assignment6;

import java.util.Scanner;

public class assignment6 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //Scanner
        Scanner input = new Scanner(System.in);

        //Enter integer
        System.out.println("Enter a integer ");
        int data = input.nextInt();

        //Accept integers until 42 is entered
        int sum = 42;
        while (data != 42) {
            sum += data;

            System.out.println("Enter another integer ");
            data = input.nextInt();
        }
        //Display sum of numbers entered
        System.out.println("The sum of all numbers entered is: " + sum);

        //Display Average of numbers entered
        System.out.println("Average of all numbers entered is:" + ( sum/ ));

    }
}

【问题讨论】:

  • 问题在哪里?

标签: java loops sum average


【解决方案1】:

检查下面的代码。

package stackoverflow;

import java.util.Scanner;

public class LoopTest {

public static void main(String[] args) 
{
    // TODO Auto-generated method stub

    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter number");

    int input  = 0;
    double sum = 0;
    double avg = 0;
    int count = 0;

    //Infinite Loop
    while (true)
    {   
        //Accept Number
        input  = scanner.nextInt();

        //Check Entered Number
        if (input  != 42)
        {
            sum = sum + input ;
            count = count + 1;
            avg = sum/count;
        }
        else
            break;
    }

    System.out.println("Numbers Entered : " + count);
    System.out.println("Sum of Numbers : " + sum);
    System.out.println("Average of Numbers : " + avg);
}

}

【讨论】:

  • 这非常有效。我应该能够弄清楚如何自己显示输入的最小数字和输入的最大数字。感谢您的帮助
  • 添加 int min = 0;整数最大值 = 0;并将 if 块更改为 ---- if (input != 42) { if (input 最大值)最大值 = 输入;数组[计数] = 输入;总和 = 总和 + 输入;计数 = 计数 + 1;平均值=总和/计数; } 然后显示最小值和最大值
【解决方案2】:

如果 sum 设置为 0,则可以数 42。

另外,使用while(true) 永久循环,使用break; 结束循环。 break语句执行后什么都没有,所以

int count = 1;
while(true) {
   sum += data;

   System.out.println("Enter another integer ");
   data = input.nextInt();
   count++;
   if(data == 42) {
       break;
   }
}

【讨论】:

  • 所以我将它输入到 Eclipse 并说我运行它并输入“10”“10”“10”和“42”,程序不会进入下一步(总和、平均值等)直到您在 42 之后输入另一个数字。总数应为 30,平均值应为 10,因为它除以三,但我收到“72 总和”和“18 平均值”。这有意义吗?
  • 你得到 72,因为它就像 30 + 42。因此,如果你每次都减去 42,你将得到你想要的总和和平均值。这不是“真正的”解决方案,而只是您可能要考虑的建议! :D
【解决方案3】:

要添加一个计数,您所要做的就是创建一个变量

    int count = 0;

例如,然后每次循环重复时添加一个

【讨论】:

  • “Int”为你编译成功了吗?
  • @mhasan 你是什么意思?
  • 我希望你知道 Java 编译器是区分大小写的
  • @mhasan 哦,那只是一个错字,我没有在 Eclipse 中编写该代码。我只是在这里写出来的
  • 请确保在发布到 SO 之前运行解决方案
【解决方案4】:
import java.util.Scanner;

public class assignment6 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //Scanner
        Scanner input = new Scanner(System.in);

        //Enter integer
        System.out.println("Enter a integer ");
        int data = input.nextInt();
        int sum   = 0 ;
        int count = 0 ;
        //Accept integers until 42 is entered

        while (data != 42) {
            sum += data;
            count += 1;

            System.out.println("Enter another integer "); 
            data = input.nextInt();
        }
        //Display sum of numbers entered
        System.out.println("The sum of all numbers entered is: " + sum);

        //Display Average of numbers entered
        System.out.println("Average of all numbers entered is:" + ( sum/count ));

    }
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2016-05-02
    • 2016-04-12
    • 2018-06-29
    • 1970-01-01
    • 2022-11-23
    • 2017-02-03
    相关资源
    最近更新 更多