当前位置: 首页 > 知识库问答 >
问题:

为什么我的计数在输入0时增加,它应该退出循环

空英逸
2023-03-14

我整晚都在做这个,但是什么也没做出来。我希望我的代码对用户输入的所有数字求和,计算用户输入数字的次数。然后计算平均值。然后找到最大值和最小值,很容易就对了。是的,如果我被允许使用数组,但这是为了复习,我讨厌while循环。

这是我的密码。

        double integer = 1;
      //double num = 0;
        double sum = 0.0;
        double average = 0.0;
        Scanner input = new Scanner(System.in);
        int count = 0;
       // double char1=0;
        double min = integer;
        double max = integer;
      // char letter = 'q';

       while (integer != 0) {

            System.out.println("Please enter an integer: ");
            integer = input.nextInt();

            sum += integer; 
           count++;
            System.out.println("The sum of your numbers is: " + sum);
            System.out.println("The number of values entered is: " +    count);
            System.out.println("");

            if (integer > max)
                max = integer;
            else if (integer < min)
                min = integer;


       }

以下是输出结果:

请输入一个整数:3您的数字之和为:3.0输入的值数为:1

请输入一个整数:2数字之和为:5.0输入的数值个数为:2

请输入一个整数:1数字之和为:6.0输入的数值个数为:3

请输入一个整数:0 您的数字之和为:6.0 输入的值数为:4

您的总和的平均值是:1.5最大整数是:3.0最小整数是:0.0

当计数增加1时,我的平均值出现错误。但是为什么0被计算为计数的一部分,为什么我的最小值总是输出0,而不是用户输入的值。非常感谢您的任何帮助。

p、 我试过很多方法,但都不起作用。如果我尝试将我的计数从-1开始,它解决了我手头的平均问题,但计数无论如何都会增加,所以我知道它是不正确的。此外,最小问题仍然存在。

谢了伙计们

共有3个答案

娄丁雨
2023-03-14

您需要添加一个额外的if条件才能使其正常工作。我在您的代码中进行了如下更改,并且它正在按预期工作。

   double integer = 1;
  //double num = 0;
    double sum = 0.0;
    double average = 0.0;
    Scanner input = new Scanner(System.in);
    int count = 0;

    double min = integer;
    double max = integer;


   while (true) {

        System.out.println("Please enter an integer: ");
        integer = input.nextInt();
         if(integer != 0)
      {
        sum += integer; 
       count++;
        System.out.println("The sum of your numbers is: " + sum);
        System.out.println("The number of values entered is: " +    count);
        System.out.println("");

        if (integer > max)
            max = integer;
        else if (integer < min)
            min = integer;
       }
       else 
           break;


   }
荀靖
2023-03-14

试试这个:

对于这些情况,最好使用条件< code>do while。并将< code>min初始化为允许的最大值。

  double integer;
  double sum = 0.0;
  Scanner input = new Scanner(System.in);
  int count = 0;
  double min = Double.MAX_VALUE;
  double max = 0;      
  do {
      System.out.print("Please enter an integer: ");
      integer = input.nextInt();
      if (integer >0) {
         sum += integer; 
         count++;
         System.out.println("The sum of your numbers is: " + sum);
         System.out.println("The number of values entered is: " +    count);
         System.out.println("");
         if (integer > max)
             max = integer;
         if (integer < min)
             min = integer;
      }
   } while (integer != 0);
   System.out.println("avg: "+sum/count); 
   System.out.println("max: "+max);
   System.out.println("min: "+min);
袁宜民
2023-03-14

您需要添加 if 条件以避免在输入 0 时递增。

你可以用这个代码

// setting starting min and max value.
double min = Double.MAX_VALUE;
double max = Double.MIN_VALUE;

while (integer != 0) {

    System.out.println("Please enter an integer: ");
    integer = input.nextInt();

    sum += integer; 
    if (integer != 0) { // added if condition
        count++;
        System.out.println("The sum of your numbers is: " + sum);
        System.out.println("The number of values entered is: " +    count);
        System.out.println("");

        if (integer > max)
            max = integer;

        if (integer < min) // changed 'else if' to 'if'
            min = integer;
    }
}

System.out.println("Max : " + max);
System.out.println("Min : " + min);
 类似资料:
  • “输入一个单词或者按‘Q’退出”但是我不知道怎么做。我觉得有点困惑。 这是我第一次用Java编码,我还在学习。

  • 应该添加什么来计算和输出每个行为的可变能量的增加或减少?能量的初始值:个人、学生和学生工作者为10,专业人员和研究人员为8。 null

  • 问题内容: 这是代码- 这是输出- 0 0 1 2 3 4 5 6 7 8 当我想在for循环退出后使用变量i时,出现了我的问题。我会假设我正在读取7,即从零开始的计数中的第8个增量,但实际上是8!在循环退出时对变量i又增加了一个增量。 为了解决这个问题,我必须在循环的末尾以及在其他任何代码中使用它之前,先执行类似i的操作。在我看来,这使代码更难理解。 有更好的解决方案吗? 问题答案: 当值为7时

  • 问题内容: 当我退出“活动”退出(通过“后退”按钮)时,我的应用程序崩溃。据我所知,这是在Android代码库中发生的,而不是我的,但是我并不完全相信。 这是来自adb的stacktrace: 有人有什么想法/建议吗? 问题答案: 无助,因为没有代码。还在看 造成原因:android.app.Activity.performStop(Activity.java:3575)上的java.lang.N

  • 我目前设置了一个函数,该函数要求用户输入一个int,获取该int,然后检查以确保输入符合特定规范。在这种情况下,输入应该是一个介于-10和100之间的整数。现在,如果我输入任何字母字符串,例如“gfUIWYDUF”,函数将返回0。为什么会发生这种情况,我该如何解决?

  • 我正在运行一个模型来检测图像中一些有趣的特征。我有一组600x200像素的图像。这些图像具有我想识别的岩石碎片等特征。想象一个(4x12)网格覆盖在图像上,我可以使用注释器工具手动生成注释,例如((4,9),(3,10),(3,11),(3,12)),以识别图像中感兴趣的单元格。我可以用Keras建立CNN模型,输入为灰度图像。但我应该如何对输出进行编码。在我看来,一种直观的方法是将其视为形状的稀