Java 打破循环,从而不包含值
我有一个问题,关于如何打破一个循环,以便不包括一个值。我应该输入几个整数来表示考试成绩,然后在输入值“0”时中断循环。但是,我不希望在计算平均值和最小值时包含0。这有点模糊,所以这是我的代码Java 打破循环,从而不包含值,java,while-loop,Java,While Loop,我有一个问题,关于如何打破一个循环,以便不包括一个值。我应该输入几个整数来表示考试成绩,然后在输入值“0”时中断循环。但是,我不希望在计算平均值和最小值时包含0。这有点模糊,所以这是我的代码 import java.util.*; import java.lang.*; public class Grades { public static void main (String[] args) { Scanner myScan= new Scanner(System.
import java.util.*;
import java.lang.*;
public class Grades
{
public static void main (String[] args)
{
Scanner myScan= new Scanner(System.in);
String input="Input numerical grade:";
System.out.println(input);
int sum=0;
int count= 0;
int max= 0;
int min= 0;
double avg=0;
boolean notNull= true;
while(notNull== true)//While grades are greater than 0 ask the question again
{
int grade= myScan.nextInt();
if(grade==0)break;
if(grade>max)
{
max=grade;
}
if(grade<min)
{
min=grade;
}
System.out.println(input);
sum +=grade;
count++;
avg= (sum)/(count);
}
System.out.println("Maximum:"+max);
System.out.println("Minimum:"+min);
System.out.println("Average:"+avg);
}
}
您的程序正在打印的
0
不是用户输入的0
。这是您初始化min
的0
。(目前,您的平均值正在正确计算中。)
另外,正如我所评论的,因为您从未接触过用作while循环的布尔值
,并且您只想在用户输入0
时退出循环,所以您可以删除整个变量,然后使用while(true)
在处理0
之前,您似乎已经脱离了循环。最小值为0的原因是您将其初始化为0,因此当然if(grade您没有考虑您已将最小值初始化为0,所以:
if(grade<min)
{
min=grade;
}
你可能想要这样的东西:
import java.util.Scanner;
public class Grades {
public static void main(String[] args) {
Scanner myScan = new Scanner(System.in);
String input = "Input numerical grade:";
System.out.println(input);
int grade = myScan.nextInt();
int sum = 0;
int count = 0;
int max = grade;
int min = grade;
double avg = grade;
while (grade != 0) {
if (grade > max) {
max = grade;
}
if (grade < min) {
min = grade;
}
count++;
sum += grade;
avg = (sum) / (count);
System.out.println(input);
grade = myScan.nextInt();
}
System.out.println("Maximum:" + max);
System.out.println("Minimum:" + min);
System.out.println("Average:" + avg);
}
}
修正你的标签,这样我们就可以知道循环的内部和外部是什么,而不是使用布尔值,你可以只做,而(true)
…你所做的应该是有效的,尽管不可能用糟糕的缩进来确定排序。你的问题是将“min”初始化为零——总是初始化“min”这是一个很大的数字。无论谁否决了每个答案,都应该留下一条评论来解释原因。我否决了布莱恩的答案,并给出了解释。我不知道其他否决答案的人是否都是正确的。杰森,我不知道是谁否决了我们的答案,但我会否决你的答案。我也否决了你的答案!现在我们是反对票的朋友!小心因为投票很重要!
int min = Integer.MAX_VALUE;
if(grade<min)
{
min=grade;
}
if(min == 0 || min < grade)
{
min=grade;
}
import java.util.Scanner;
public class Grades {
public static void main(String[] args) {
Scanner myScan = new Scanner(System.in);
String input = "Input numerical grade:";
System.out.println(input);
int grade = myScan.nextInt();
int sum = 0;
int count = 0;
int max = grade;
int min = grade;
double avg = grade;
while (grade != 0) {
if (grade > max) {
max = grade;
}
if (grade < min) {
min = grade;
}
count++;
sum += grade;
avg = (sum) / (count);
System.out.println(input);
grade = myScan.nextInt();
}
System.out.println("Maximum:" + max);
System.out.println("Minimum:" + min);
System.out.println("Average:" + avg);
}
}
Input numerical grade:
89
Input numerical grade:
47
Input numerical grade:
78
Input numerical grade:
0
Maximum:89
Minimum:47
Average:71.0