当前位置: 代码迷 >> Java相关 >> 关于输入的问题?(已解决)
  详细解决方案

关于输入的问题?(已解决)

热度:103   发布时间:2008-03-28 17:39:40.0
关于输入的问题?(已解决)
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]]
搜索更多相关的解决方案: Random  System  java  import  

----------------解决方案--------------------------------------------------------
回复 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用什么,我也不知道-_-!
照二楼的方法暂时可以解决,虽然这不是你的理想结果.
----------------解决方案--------------------------------------------------------
呵呵  谢谢各位了?我知道了其实我实际是输入了三次才循环了三次的,问题现在解决了。
----------------解决方案--------------------------------------------------------
  相关解决方案