2012-07-29 37 views
-3

我正在做一个网站的Java编程实践。我必须使用数组来展示这一点。Java条件程序

Enter the number of students: 3 
Enter the grade for student 1: 55 
Enter the grade for student 2: 108 
Invalid grade, try again... 
Enter the grade for student 2: 56 
Enter the grade for student 3: 57 
The average is 56.0 

这是我的源代码到目前为止。它显示结果但不能正常工作。第一名学生需要的学生人数为&。但然后它暂停,如果我按任何数字&按回车,它要求下一年级&等。这样它最终打印平均值。如果我输入不允许的输入,它会捕捉到这一点。 这段代码有什么问题。

package array; 

import java.util.Scanner; 

public class GradesAverage { 

    public static void main(String[] args) { 

     int numStudents, sum=0; 
     int[] grades; 

     Scanner in = new Scanner(System.in); 

     System.out.print("Enter number of students : "); 
     numStudents = in.nextInt(); 

     grades = new int[numStudents]; 
     //System.out.println(grades.length); 

     for (int i = 0; i < numStudents; i++) { 
       System.out.print("Enter grade of student "+i+" :"); 
       grades[i] = Integer.parseInt(in.next()); 
       if(grades[i]>100 || grades[i]<0) 
       { 
        System.out.println("It is not a valid number!"); 
        i--; 
        continue; 
       } 

       //grades[i] = Integer.parseInt(in.next()); 
       sum+=grades[i]; 
     } 

     System.out.print("Average grades are: "+sum/numStudents); 

     in.close(); 
    } 

} 
+3

*此代码有什么问题* - 您告诉我们!它以何种方式表现不如预期? – aioobe 2012-07-29 12:18:52

+0

您是否尝试过使用调试器? – Rndm 2012-07-29 12:19:14

+0

@aioobe:正如我在OP中所说的那样,在获得第一个等级的输入后,它就停下来了。然后,如果我在控制台上随机输入一个数字并按下回车键,它会显示下一级输入的信息。通过这种方式,当所有成绩完成后,说方式我输入一个随机数并按回车。它显示结果。虽然如果我输入了错误的输入即<0 || grade > 100,它会显示错误信息并直接再次请求相同的等级。 – enterprize 2012-07-29 12:26:56

回答

1

而不是使用您的临时变量,创建这样一个变量:

int grade = in.nextInt()

然后检查if(grade > 100 || grade < 0) // error message

不要使用in.next()两次,因为它则要求用户进行另一个数字。

+0

非常感谢你:)可能我甚至不需要额外的变种。我可以直接分配给数组。如果值错误,则在下一个输入中更新相同的索引。我更新OP中的代码。 – enterprize 2012-07-29 12:44:12