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

我的avg方法有什么问题?[副本]

屠嘉勋
2023-03-14

是的,我知道这里有很多方法。这是任务的一部分。在这段代码中,除了输入相等的数字之外,一切都正常工作

public static void main(String[] args) {
    //Use Main Method for gathering input
    float input = 1;
    // Declare variable for sum
    float theSum = 0;
    // Declare variable for average
    float average = 0;
    // Declare variable for counting the number of user inputs
    int counter = 0;
    /* Initialize the while loop using an input of 0 as a sentinel value
     * to exit the loop*/
    while (input != 0) {
        if (input!=0){
            counter++;
        }
        input = Float.parseFloat(
                JOptionPane.showInputDialog(
                null, "Please enter a number.  Enter 0 to quit: "));
        // Invoke sum method and pass input and summation to sum method


        theSum = (sum(input, theSum));
        if (theSum > 100)
        {
            JOptionPane.showMessageDialog(null, "The sum of your numbers "
                    + "are greater than 100!");
            break;
        }
    }
        // Invoke display method and pass summation, average, and counter variables to it
                average = (avg(theSum, counter));    
                display(theSum, average, counter);
    }


public static float sum(float num1, float sum) {
    //Add the user's input number to the sum variable
    sum += num1;
    //Return value of sum variable as new summation variable
    return sum;
}

public static float avg(float num1, float num2) {
    //Declare and initialize variable for average
    //Calculate average
    float average = num1 / num2;
    //Return value of average variable
    return average;
}

public static void display(float sum, float average, int counter) {

    /* I am subtracting 1 from variable counter so as not to include the sentinel value
     * of 0 that the user had to enter to exit the input loop in the overall count*/

    // Display the count, sum, and average to the user
    if (sum > 100) {
        JOptionPane.showMessageDialog(null, "Count = " + (counter) + ", Sum = " + sum + ", Average = " + average);
    }
    if (sum <= 100) {
        JOptionPane.showMessageDialog(null, "Count = " + (counter - 1) + ", Sum = " + sum + ", Average = " + average);
    }

}

}

共有3个答案

吉俊德
2023-03-14

您的计数器比必要的大 1。除以(计数器 - 1)可以修复它。

卜飞鸣
2023-03-14

问题在于您退出 while 循环的方式,如@chrylis所述。因此,如果总和

if (sum <= 100) {
        JOptionPane.showMessageDialog(null, "Count = " + (counter - 1) + ", Sum = " + sum + ", Average = " + average);
    }

正如您在示例中看到的:“如果我输入 8,10,19 和 0 退出输出是计数 3 和 37 平均值 9.25

这是因为计数器值是4(所以avg将是37/4=9.25),但在显示结果时您将计数器减去1,因此您得到计数为3

do-while循环将解决这个问题,因为最后会检查条件,因此对于两个< code >,循环将以相同的方式退出

< code>do-while循环如下所示:

do{

//here goes your code

}while (input != 0);
左丘边浩
2023-03-14

原因是,根据总和的不同,您会以不同的方式退出< code>while循环。如果总和小于100,即使当您输入数字< code>0来“退出”时,您仍然要多经历一次循环。老实说,整个循环需要彻底重构;一个<代码> do...while循环更容易阅读和调试。

 类似资料:
  • 问题内容: 这是我的方法: 我把它放回去。该方法有什么问题? 问题答案: 您的条件应为i * i <= num 您未考虑数字9,因此9 <9将导致错误。但是您需要检查9。

  • 我有一个SQL存储过程,我需要转换为Oracle。我有一些语法问题。 我当前遇到的错误是: 错误(75,1):PLS-00103:在预期以下情况之一时遇到符号“DROP”:(开始情况声明结束异常退出,如果循环mod null pragma raise return选择更新 我想我还有很多。有人能帮我找出我做错了什么吗? 以下是我所拥有的: 以下是原始SQL代码:

  • 问题内容: 运行此代码时,我不断收到此错误: 错误:大小写类型的字符不同,并且整数不能匹配 您可能会认为这不会造成问题,因为我正在查询中创建新列。我还想指出的是,如果有帮助,我正在使用旧版本的PostgreSQL。 问题答案:

  • 我试图实现连接,但我面临错误。我有产品表和商店表。产品表引用通过外键存储表,如下所示: 产品JAVA 现在,我展示tore.java 现在,我展示仓库 现在,这个错误是因为我在最后两个查询中实现了join。我想做的是购买所有商店位于特定城市或州的产品,如上图所示。 我遇到的错误是: 启动应用程序上下文时出错。要显示自动配置报告,请在启用调试的情况下重新运行应用程序。2016-10-16 09:53

  • 我试图用PUT请求调用REST API,但收到400个错误代码(错误请求)。有人能看出我做错了什么吗? 我已经用REST客户端成功调用了这个API,下面是使用的头和主体: https://imgur.com/dZVyawnhttps://imgur.com/lMtn2JB 错误400收到错误请求响应

  • 当我运行这个应用程序时,它抱怨说: org.xml.sax.saxParseException:schemaLocation:schemaLocation值=