问题:为什么grade2222 总是10,具体:我发现前面的System.in.skip( 1 );直接影响到下一个,System.in.read();的读取,并且结果总是10,那位高人讲解下:程序:
// Class average program with counter-controlled repetitionimport java.io.*;public class average{
   public static void main( String arge[] ) throws IOException
      {
         int counter, grade, total;
         double average; 
      //initialization phase
      total = 0;
      counter = 1;
      // processing phase
      while( counter <= 10){
         System.out.print( "Enter lette grade: " );
         System.out.flush();
         grade = System.in.read();
         System.out.print("grade1111 is " +grade );//test the result
         
         if( grade == 'A')
            total = total + 4;
         else if( grade == 'B')
            total = total + 3;
         else if( grade == 'C')
            total = total + 2;
         else if( grade == 'D')
            total = total + 1;
         else if( grade == 'E')
            total = total + 0;
         System.in.skip( 1 );   //skip the newline character
         counter = counter + 1;
         grade = System.in.read();
         System.out.println("grade2222 is " +grade );//test the result
        }
      //termination phase
      average = (double)total / 10;   //integer division
      System.out.println( "Class average is " + average );   }
}
运算结果:
Enter lette grade: A
grade1111 is 65grade2222 is 10
Enter lette grade: B
grade1111 is 66grade2222 is 10
Enter lette grade: A
grade1111 is 65grade2222 is 10
Enter lette grade: A
grade1111 is 65grade2222 is 10
Enter lette grade: A
grade1111 is 65grade2222 is 10
Enter lette grade: A
grade1111 is 65grade2222 is 10
Enter lette grade: A
grade1111 is 65grade2222 is 10
Enter lette grade: A
grade1111 is 65grade2222 is 10
Enter lette grade: A
grade1111 is 65grade2222 is 10
Enter lette grade: A
grade1111 is 65grade2222 is 10
Class average is 3.9为什么grade2222 总是10,而且前面的System.in.skip( 1 );直接影响到下一个,System.in.read();的读取,并且结果总是10,那位高人讲解下: