高分求解决一个java问题!我就剩下40分了,都给了,呵呵。
import
java.io.IOException;
class TestWhile{
public static void main(String[] args) throws
IOException{
char response;
System.out.println( "Are you felling better about " +
"programming?(Y or N) ");
System.out.flush();
response=(char)System.in.read();
while ( response != 'Y '&& response != 'N ' ){
System.out.println( "Invalid letter. ");
System.out.println( "Enter only 'Y ' or 'N ' ");
response=(char)System.in.read();
//System.out.println( "a " + response + "b ");
}
if(response == 'Y ')
System.out.println( "I am grad. ");
else
System.out.println( "Keep trying! ");
}
}
/*
但运行结果却是这样:
Are you felling better about programming?(Y or N)
d
Invalid letter.
Enter only 'Y ' or 'N '
Invalid letter.
Enter only 'Y ' or 'N '
Invalid letter.
Enter only 'Y ' or 'N '
Y
I am grad.
为什么在输入d时,循环了了三次呢,,请说明原因及提出修改方法
*/
------解决方案--------------------修改后的代码:
import java.io.*;
class TestWhile{
public static void main(String[] args) throws IOException{
String response;
System.out.println( "Are you felling better about " +
"programming?(Y or N) ");
System.out.flush();
BufferedReader in = new BufferedReader( new InputStreamReader(System.in));
response=in.readLine();
while ( !response.equals( "Y ") && !response.equals( "N ") ){
System.out.println( "Invalid letter. ");
System.out.println( "Enter only 'Y ' or 'N ' ");
response=in.readLine();
//System.out.println( "a " + response + "b ");
}
if(response.equals( "Y "))
System.out.println( "I am grad. ");
else
System.out.println( "Keep trying! ");
}
}
------解决方案--------------------因为,你输入d之后回车,真实的输入是d\r\n,一共3个字符,呵呵
------解决方案--------------------你输入的一个字符再加上回车 一共是三个字符 回车占两个 所以循环了三次。 用BufferedReader比较保险点
------解决方案--------------------好像是每天回一次贴可以加10分。
lz不要只会索取,没有奉献哦。