当前位置:编程学习 > JAVA >>

java 键盘获取一个字符问题?

java 键盘获取一个字符问题?

想从键盘获取一个字符,不按回车。接着获取下面的字符!

但是read()是带阻塞的,只有敲回车后才能往下执行。

想问有没有不带阻塞的! --------------------编程问答-------------------- 想让程序往下继续执行可以考虑下多线程嘛 --------------------编程问答-------------------- 就像单纯的用IO去做,不太想用线程!!

最主要的问题就是java  iO的非阻塞问题。 --------------------编程问答-------------------- java获取键盘的输入方式,都是在System.in这个输入流上做的包装啊

而这是一个InputStream类型,所以所有的获取输入的方式都是阻塞的

你想直接从流上着手,我个人推测不太可能。 --------------------编程问答-------------------- 不知道楼主要的效果是不是这样。

                InputStreamReader reader=new InputStreamReader(System.in);
                BufferedReader bf=new BufferedReader(reader);
                String data;
                while((data=bf.readLine())!=null && data.length()!=0){
                        System.out.println("echo:"+data);
                }

--------------------编程问答-------------------- 都是堵塞式的吧

public void PrintWriterDemo throws IOExcepton
{
    BufferedReader bufr = new BufferedReader(InputStreamReader(System.in));

//设置成true,自动刷新
  PrintWriter out = new PrintWriter(new FileWriter(路径),true);

String line ="";
while((line=bufr.readLine())!=null)
{
    if("over".equals(line))
            break;
   out.println(line.toUpperCase());
}
bufr.close();
out.close();
} --------------------编程问答-------------------- scanner --------------------编程问答-------------------- 如果你有视图的话,可以搞一个键盘事件的监听器,监听所有键盘按下事件,从而获得每个字符。

 this.addKeyListener(new KeyAdapter(){    
     public void keyPressed(KeyEvent e){         
         String keyText = KeyEvent.getKeyText(e.getKeyCode());
         System.out.print(keyText + " ");
     });


么有视图的话,楼主尝试自己实现一个键盘事件监听器吧 --------------------编程问答-------------------- 这是绝对不阻塞的,按下立即返回.

引用 7 楼 kexinmei 的回复:
如果你有视图的话,可以搞一个键盘事件的监听器,监听所有键盘按下事件,从而获得每个字符。
Java code?12345 this.addKeyListener(new KeyAdapter(){             public void keyPressed(KeyEvent e){                                 String k……
--------------------编程问答--------------------
引用 8 楼 kexinmei 的回复:
这是绝对不阻塞的,按下立即返回.

引用 7 楼 kexinmei 的回复:如果你有视图的话,可以搞一个键盘事件的监听器,监听所有键盘按下事件,从而获得每个字符。
Java code?12345 this.addKeyListener(new KeyAdapter(){             public void keyPressed(KeyEvent e){ ……


嗯,有视图还是比较简单的。我做的是没有视图的。这个比较头痛!呵呵 --------------------编程问答--------------------
引用 5 楼 Candylibin 的回复:
都是堵塞式的吧

public void PrintWriterDemo throws IOExcepton
{
    BufferedReader bufr = new BufferedReader(InputStreamReader(System.in));

//设置成true,自动刷新
  PrintWriter out = new PrintWr……


这个好像不行,需要实现的就是按下即返回的。 --------------------编程问答--------------------
引用 4 楼 qunhao 的回复:
不知道楼主要的效果是不是这样。
Java code?123456                InputStreamReader reader=new InputStreamReader(System.in);                BufferedReader bf=new BufferedReader(reader);                Str……


谢谢您,不是您写的代码这样的要求。

是不带阻塞的,按下即返回。 --------------------编程问答--------------------
记忆中没有吧,楼主找到了告诉我们一声,谢谢
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,