当前位置: 首页 > 知识库问答 >
问题:

Java使用扫描仪按enter键

卫骏
2023-03-14

我正在用Java编程
我正在尝试编写代码,以识别用户是否在基于控制台的程序中按enter键。

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

我试着用scanner来做这件事,但按了两次enter键后,程序终止,无法工作

    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!");

如何做到这一点,使用缓冲输入读取器的好处是什么?

共有2个答案

袁文景
2023-03-14
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);

此代码工作正常

秦光启
2023-03-14

这是使用java实现的。util。扫描器并将进行多次“回车”按键:

    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,它从标准输入流(键盘)中读取并从中读取一行。

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

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

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

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

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

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

 类似资料:
  • 问题内容: 我正在使用Java进行编程。 我正在尝试编写可识别用户是否在基于 控制台的程序中 按Enter键的代码 。 我如何使用Java做到这一点。有人告诉我,可以使用“扫描仪”或缓冲输入阅读器完成此操作。我不了解(或不知道如何使用)缓冲输入阅读器。 我尝试使用扫描仪执行此操作,但在按Enter键两次后,程序终止,并且不起作用 谢谢 -编辑-以下代码使用字符串方法代替 如何做到这一点?使用缓冲输

  • 这个代码中的对象扫描仪有什么问题? 当我选择案例2时,我得到了这个错误: 我认为scanner首先声明为int,现在在切换之后,我用类型double收集答案。我不太确定,我需要更多地了解scanner类是如何工作的。

  • 我正在创建一个小算法,这是其中的一部分。 如果用户输入非整数值,我想输出一条消息,让用户再次输入一个数字: 我得到了一个永无止境的循环,我不知道为什么。 如果用户输入非整数数字,我如何识别? 如果用户输入非整数数字,我如何要求用户再次输入? 更新 当我打印异常时,我得到了InputMismatchExctive,我应该怎么做?

  • 问题内容: 如何将扫描仪的定界符设置为;或换行? 我试过: 但这不起作用。 问题答案: 通常,在模式中,您需要将翻倍。 所以,尝试 要么 编辑 :如果是问题,则可能要尝试以下操作: 它匹配的一个或多个,和。 注意 :我还没有尝试过这些。

  • 问题内容: 我有一个创建多个对象并将其放入一个类的类,如下所示: 我有一个从控制台扫描输入“ add”的应用程序,如果找到该应用程序,则调用如下所示的方法: 该应用程序应允许用户根据需要多次输入“添加”,但是在add调用该方法后将出现错误“找不到行” 。 我猜这是因为方法中的尚未关闭,然后在需要时重新打开。这是程序的问题吗?如果是,我将如何修复它? 请注意,该程序尚未完成,因为我将添加一种出售这些

  • 问题内容: 我正在尝试读取具有多个单词的字符串,即。洛杉矶或纽约市。如果有两个词并将它们分割在变量之间,则使用scanner.next()进行“出发”和“到达”只会读取第一个。nextLine()也不是很幸运。这是我的代码: 我知道这很简单,但我还没有弄清楚。 这是上面的代码的输入/输出: 输入航班号:29 输入出发城市:(立即跳至下一行) 输入到达城市: -—我真正想要的是---- 输入航班号: