问题:为什么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,那位高人讲解下:
// 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,那位高人讲解下:
解决方案 »
- 做练习时。发现一个问题,找不到原因,求帮忙,谢谢!
- JButton mousePressed的时候如何设置背景色
- 求大虾分析下现在java程序员需求情况
- java程序大学题 谢谢啦
- 如何在jsp中引用bean?在线等!!!
- 要设计一个KTable,大家帮忙出个主意!
- java中“|”和“&”的用法,请教大家,最好给个合理的解释!
- 有关jtable问题请教
- 高手请进,散分,一个实际的jdbc数据库连接问题。
- 用java如何实现文本编辑器的关键字变色?
- 请问这个程序中的getNextValue以及getPreviousValue是怎么实现的,初学,好像看不太懂?
- 有关AclNotFoundException 使用的问题
在windows上,换行的时候不止一个字符哦,是\r\n两个字符,就是0x0D和0x0A。
你跳过前一个,没跳过后一个,0x0A是多少呢?16进制,刚好是10进制的数字10。
这就是为什么你一直读到10的原因。至于你的程序呢,还需要改进。