在范围界定方面存在一些问题。我正在尝试使用循环编写程序,该循环从键盘获取表示考试成绩(0到100之间)的10个值,并输出所有输入值的最小值,最大值和平均值。我的程序不能接受小于0或大于100的值。
import java.util.Scanner;
import java.util.Arrays;
public class ExamBookClient
{
public static void main( String[] args)
{
Scanner scan = new Scanner(System.in);
int MAX = 100;
int MIN = 0;
int[] grades = new int[10];
System.out.println("Please enter the grades into the gradebook.");
if(scan.hasNextInt())
{
for (int i = 0; i < grades.length; i++)
{
if( x>MIN && x<MAX)
{
int x = scan.nextInt();
grades[i] = x;
}
}
}
System.out.print("The grades are " + grades.length);
}
}
我的编译器错误是我无法修复范围错误:
ExamBookClient.java:21: error: cannot find symbol
if( x>MIN && x<MAX)
^
symbol: variable x
location: class ExamBookClient
ExamBookClient.java:21: error: cannot find symbol
if( x>MIN && x<MAX)
^
答案 0 :(得分:2)
要解决范围界定问题,请将x
的声明/初始化移至首次使用之前的某个位置:
int x = scan.nextInt();
if( x>MIN && x<MAX ) {
grades[i] = x;
}
您的代码存在一些问题:
if(scan.hasNextInt())
只会在第一次阅读int
之前执行;您应该更改代码以在循环的每次迭代中检查下一个int min
,max
和total
答案 1 :(得分:1)
将x移到if。
之上if(scan.hasNextInt())
{
for (int i = 0; i < grades.length; i++)
{
int x = scan.nextInt();
if( x>MIN && x<MAX)
{
grades[i] = x;
}
}
答案 2 :(得分:1)
您已在x
子句中声明if
。因此,当您的计划到达if
时,x
将无法定义。试试这个:
int x = scan.nextInt(); // OUTSIDE THE IF
if( x > MIN && x < MAX)
{
grades[i] = x;
}