首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >试图计算使用do-while和while循环给出的输入的平均值,但是它一直在停止。

试图计算使用do-while和while循环给出的输入的平均值,但是它一直在停止。
EN

Stack Overflow用户
提问于 2015-05-11 17:40:32
回答 3查看 5.3K关注 0票数 1

脚本的主要目的是不断询问成绩,直到用户输入负数为止。一旦输入了负数,它就会计算出这些等级的平均值。用户输入的等级只能是4-10。

我已经想了好几个小时了.如果我只输入无效的输入或只输入有效的输入,它就可以正常工作,但是第二次我尝试混合脚本停止。

例如:如果输入4(有效输入),脚本将请求另一个级别。如果我输入3(无效输入),脚本说明输入无效,并请求另一个有效输入。在那之后,如果我再次输入4,它就停止工作,当它应该一直这样运行,直到我输入一个负数,使它开始计算有效输入的平均值。

代码语言:javascript
运行
复制
import java.util.Scanner;

public class Average {

public static void main(String[] args){

    Scanner scanner = new Scanner(System.in);

System.out.println("The program will calculate the average of the user inputted grades.");
System.out.println("The program will start calculating with any negative integer");

double grade;   
double sum = 0;
int count = 0;



do {
    System.out.print("Input grade (4-10): ");
    grade = scanner.nextDouble();

    if (grade >= 4 && grade <= 10){
        sum = sum + grade;
        count++; 
    }



} while (grade >= 4 && grade <= 10);

 {


while (grade >= 0 && grade < 4 || grade > 10){

    System.out.println("Invalid grade!");
    System.out.print("Input grade (4-10): ");
    grade = scanner.nextDouble();


    if (grade < 0){

        System.out.println(count + " grades were given.");
        System.out.println("Average: " + sum/count);
        break;
    }
  }
 }
} 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-11 18:08:12

它不能工作,因为循环是分开的,所以如果第一个是假的,第二个只能工作一次,然后停止。试着做这样的事情:

代码语言:javascript
运行
复制
import java.util.Scanner;

public class Average {

    public static void main(String[] args){

        Scanner scanner = new Scanner(System.in);

        System.out.println("The program will calculate the average of the user inputted grades.");
        System.out.println("The program will start calculating with any negative integer");

        double sum = 0;
        int count = 0;
        double grade;

        do{
            System.out.print("Input grade (4-10): ");
            grade = scanner.nextDouble();

            if(grade >= 4 && grade <= 10){
                    sum = sum + grade;
                    count++;
            }else{
                System.out.println("Invalid grade!");
            }
        }while(grade >= 0);

        System.out.println(count + " grades were given.");
        System.out.println("Average: " + sum/count);


    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-05-11 18:11:13

第一个while循环只用于有效输入,第二个循环仅用于无效输入,换句话说,如果您在put 3和5中,它已经退出了这两个循环。

尝尝这个

代码语言:javascript
运行
复制
while(true) {
    System.out.print("Input grade (4-10): ");
    grade = scanner.nextDouble();
    if(grade < 0){
        System.out.println(count + " grades were given.");
        System.out.println("Average: " + sum / count);
        break;
    }
    if(grade >= 4 && grade <= 10){
        sum = sum + grade;
        count++;
    } else {
        System.out.println("Invalid grade!");
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-05-11 18:11:17

尽量避免嵌入的时间/做时间-因为你正在经历它们是很难读,所以它可能是很难弄清楚是怎么回事。使用一个while循环可以更容易地实现您想要实现的目标:

代码语言:javascript
运行
复制
System.out.print("Input grade (4-10): ");
grade = scanner.nextDouble();

while (grade >= 0)
{
    if (grade < 4 || grade > 10)
    {
        System.out.println("Invalid grade!");
    }
    else
    {
        sum = sum + grade;
        count++;
    }

    System.out.print("Input grade (4-10): ");
    grade = scanner.nextDouble();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30174167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档