关于输入的问题?(已解决)
import java.io.*;import java.util.Random;
class Rnd{
public static void main(String[] args){
int i,j,k;
Random rnd1=new Random();
Random rnd2=new Random();
try{
while(true){
System.out.print("请输入一个字符(Y/N):");//这里怎么会执行三次了
char ch=(char)System.in.read();
if(ch=='y'){
System.out.println(rnd1.nextInt()+" "+rnd2.nextInt());
}
if(ch=='n'){
System.exit(-1);
}
}
}catch(Exception e){
e.printStackTrace();
}
}
}
请教一下这个程序 第一行怎么会运行三次后再输入勒?()
[[it] 本帖最后由 he20041987 于 2008-3-29 18:01 编辑 [/it]]
----------------解决方案--------------------------------------------------------
回复 1# 的帖子
import java.io.*;import java.util.Random;
class Rnd{
public static void main(String[] args){
int i,j,k;
Random rnd1=new Random();
Random rnd2=new Random();
try{
while(true){
System.out.print("请输入一个字符(Y/N):");//这里怎么会执行三次了
char ch=(char)System.in.read();
if(ch=='y'){
System.out.println(rnd1.nextInt()+" "+rnd2.nextInt());
}
if(ch=='n'){ //原因出在这里吧,它没有退出循环,改成if(ch!='y')
//就不会出现这种情况了!
System.exit(-1);
}
}
}catch(Exception e){
e.printStackTrace();
}
}
}
----------------解决方案--------------------------------------------------------
in.read();
从此输入流中读取下一个数据字节。返回一个 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有字节可用,则返回 -1。在输入数据可用、检测到流末尾或抛出异常之前,此方法将一直阻塞。
在循环中,char ch=(char)System.in.read();
如:输入'k'回车
这就等于输入了二个字符
read()先读第一个'k'
再读第二个'\r'(回车符)
最后第三个'\n'()(已经到达流末尾,返回-1)
在C中,可用fflush(stdin);来清除缓冲区.
java用什么,我也不知道-_-!
照二楼的方法暂时可以解决,虽然这不是你的理想结果.
----------------解决方案--------------------------------------------------------
呵呵 谢谢各位了?我知道了其实我实际是输入了三次才循环了三次的,问题现在解决了。
----------------解决方案--------------------------------------------------------