当前位置: 技术问答>java相关
一个简单的Java程序!错误不知道是怎么产生的,请大家指点!谢谢!
来源: 互联网 发布时间:2015-08-08
本文导语: import java.io.*; public class lr{ public static void main(String args[]){ char c='a'; do{ System.out.println("Please enter a letter:"); try{ c=(char)System.in.read(); }catch(IOException e){}; switch(c){ case 'L' :...
import java.io.*;
public class lr{
public static void main(String args[]){
char c='a';
do{
System.out.println("Please enter a letter:");
try{
c=(char)System.in.read();
}catch(IOException e){};
switch(c){
case 'L' : System.out.println("Left");
break;
case 'R' : System.out.println("Right");
break;
default : System.out.println("Not Known.");
}
}while(c!='q');
}
}
[命题]从键盘输入字母,如果是L,就显示Left.如果是R就显示Right.其余的显示Not Known.并反复工作,直到输入的字母是q的时候程序结束。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:javac lr.java
c:java lr
Please enter a letter:
L
Left
Please enter a letter:
Not Known.
Please enter a letter:
Not Known.
Please enter a letter:
~~~~~~~~~~~~~~~~~~~~~~
为什么会这样呢?按理说输入一个L以后应该是这样的呀:
c:java lr
Please enter a letter:
L
Left
Please enter a letter:
~~~~~~~~~~~~~~~~~~~~~~~~~~
为什么后面自动跳出那里多我错在哪里请大家教教我好吗?雪儿在这里谢谢大家了。
public class lr{
public static void main(String args[]){
char c='a';
do{
System.out.println("Please enter a letter:");
try{
c=(char)System.in.read();
}catch(IOException e){};
switch(c){
case 'L' : System.out.println("Left");
break;
case 'R' : System.out.println("Right");
break;
default : System.out.println("Not Known.");
}
}while(c!='q');
}
}
[命题]从键盘输入字母,如果是L,就显示Left.如果是R就显示Right.其余的显示Not Known.并反复工作,直到输入的字母是q的时候程序结束。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:javac lr.java
c:java lr
Please enter a letter:
L
Left
Please enter a letter:
Not Known.
Please enter a letter:
Not Known.
Please enter a letter:
~~~~~~~~~~~~~~~~~~~~~~
为什么会这样呢?按理说输入一个L以后应该是这样的呀:
c:java lr
Please enter a letter:
L
Left
Please enter a letter:
~~~~~~~~~~~~~~~~~~~~~~~~~~
为什么后面自动跳出那里多我错在哪里请大家教教我好吗?雪儿在这里谢谢大家了。
|
你的问题是由这个原因引起的:当你输入“L”时,你还得敲“Enter”确认,可这时System.in.read()把这当成两个字符读入了,一个是“L”,另一个是“n”,所以你的程序就执行了两遍,第一遍显示了“Left”,而第二遍由于字符是“n”,所以显示的是default中的"Not Known."。