Java使用扫描仪输入键按下

Posted

技术标签:

【中文标题】Java使用扫描仪输入键按下【英文标题】:Java using scanner enter key pressed 【发布时间】:2013-08-19 08:17:57 【问题描述】:

我正在使用 Java 进行编程。 我正在尝试编写可以识别用户是否在基于控制台的程序中按下回车键的代码。

我如何使用 java 来做到这一点。有人告诉我,这可以使用 Scanner 或缓冲输入阅读器来完成。我不了解(或不知道如何使用)缓冲输入阅读器。

我尝试使用扫描仪执行此操作,但按两次回车后程序终止,并且不起作用

    Scanner readinput = new Scanner(System.in);

    String enterkey = "Hola";
    System.out.print(enterkey);


    enterkey = readinput.nextLine();
     System.out.print(enterkey);

    if(enterkey == "")

        System.out.println("It works!");

谢谢

-- 编辑-- 以下代码使用字符串的equals 方法而不是==

    Scanner readinput = new Scanner(System.in);

    String enterkey = "Hola";
    System.out.print(enterkey);


    enterkey = readinput.nextLine();
     System.out.print(enterkey);

    if(enterkey.equals(""))

        System.out.println("It works!");

如何做到这一点,使用缓冲输入阅读器这样做的优点是什么?

【问题讨论】:

String 的值与Stringequals 方法进行比较,而不是与== 比较,后者比较两个对象引用以确定它们是否引用同一个对象。 首先,在 Java 中永远不要将字符串与 == 进行比较。 谢谢,'使用 equals 方法比较字符串' 【参考方案1】:

这可以使用 java.util.Scanner 并且需要多次“输入”键击:

    Scanner scanner = new Scanner(System.in);
    String readString = scanner.nextLine();
    while(readString!=null) 
        System.out.println(readString);

        if (readString.isEmpty()) 
            System.out.println("Read Enter Key.");
        

        if (scanner.hasNextLine()) 
            readString = scanner.nextLine();
         else 
            readString = null;
        
    

分解:

Scanner scanner = new Scanner(System.in);
String readString = scanner.nextLine();

这些行初始化一个新的Scanner,它从standard input stream(键盘)读取并从中读取一行。

    while(readString!=null) 
        System.out.println(readString);

当扫描仪仍在返回非空数据时,将每一行打印到屏幕上。

        if (readString.isEmpty()) 
            System.out.println("Read Enter Key.");
        

如果输入提供了“输入”(或返回,或其他)键,nextLine() 方法将返回一个空字符串;通过检查字符串是否为空,我们可以确定该键是否被按下。此处打印了 Read Enter Key 文本,但您可以在此处执行任何您想要的操作。

        if (scanner.hasNextLine()) 
            readString = scanner.nextLine();
         else 
            readString = null;
        

最后,在打印完内容和/或按下“回车”键后,我们检查扫描仪是否有另一行;对于标准输入流,此方法将“阻塞”,直到流关闭、程序执行结束或提供进一步的输入。

【讨论】:

【参考方案2】:
Scanner scan = new Scanner(System.in);
        int i = scan.nextInt();
        Double d = scan.nextDouble();


        String newStr = "";
        Scanner charScanner = new Scanner( System.in ).useDelimiter( "(\\b|\\B)" ) ;
        while( charScanner.hasNext() )  
            String  c = charScanner.next();

            if (c.equalsIgnoreCase("\r")) 
                break;
            
            else 
                newStr += c;    
            
        

        System.out.println("String: " + newStr);
        System.out.println("Int: " + i);
        System.out.println("Double: " + d);

这段代码运行良好

【讨论】:

以上是关于Java使用扫描仪输入键按下的主要内容,如果未能解决你的问题,请参考以下文章

使用 Kivy 读取条码扫描器

Jquery改变输入键按下制表键

允许“Enter”键按下提交按钮,而不是仅使用 MouseClick

Java学习笔记之[ 利用扫描仪Scanner进行数据输入 ]

如何使用扫描仪在java中将输入作为带有空格的字符串

Java 扫描仪字符串输入