【问题标题】:Scanner method to get a char获取字符的扫描仪方法
【发布时间】:2011-02-05 13:43:17
【问题描述】:

什么是Scanner 方法来获取Java 中键盘返回的char

比如nextLine() 对应StringnextInt() 对应int,等等。

【问题讨论】:

  • 原来没有内置方法。我最终做了 String str = kb.nextLine(); char c = str.charAt(0);

标签: java char java.util.scanner


【解决方案1】:

要从Scanner 获取char,您可以使用findInLine 方法。

    Scanner sc = new Scanner("abc");
    char ch = sc.findInLine(".").charAt(0);
    System.out.println(ch); // prints "a"
    System.out.println(sc.next()); // prints "bc"

如果您需要Scanner 中的一堆char,那么(可能暂时)将分隔符更改为空字符串可能更方便。这将使next() 每次都返回一个长度为1 的字符串。

    Scanner sc = new Scanner("abc");
    sc.useDelimiter("");
    while (sc.hasNext()) {
        System.out.println(sc.next());
    } // prints "a", "b", "c"

【讨论】:

  • @poly : 默认分隔符是 (" ")...?如何设置回来?这是建议的方式吗?因为这个比所有其他给定的解决方案都简单!
  • findInLine(".")将不匹配换行符。第二种方法可以。
  • 为什么要使用findInLine("."); 我可以通过这个Scanner in =new Scanner(System.in); char a; a=in.next().charAt(0); System.out.println(a);得到输入
【解决方案2】:

您可以按如下方式使用Console API(在 Java 6 中出现):

Console cons = System.console();
if(cons != null) {
  char c = (char) cons.reader().read();  // Checking for EOF omitted
  ...
}

如果你只需要一行,你甚至不需要通过阅读器对象:

String s = cons.readLine();

【讨论】:

  • 感谢小伙伴的快速回复
【解决方案3】:

Java 的 Scanner 类没有内置方法来逐个字符地读取 Scanner。

http://java.sun.com/javase/6/docs/api/java/util/Scanner.html

但是,仍然可以从 Scanner 中获取单个字符,如下所示:

Scanner sc:

char c = sc.findInLine(".").charAt(0);

您可以使用它来获取扫描仪中的每个字符,如下所示:

while(sc.hasNext()){
    char c = sc.findInLine(".").charAt(0);
    System.out.println(c); //to print out every char in the scanner
}

findInLine() 方法搜索您的扫描仪并返回与您提供的正则表达式匹配的第一个字符串。

【讨论】:

    【解决方案4】:
    Console cons = System.console();
    

    上面的代码行将 cons 创建为空引用。代码和输出如下:

    Console cons = System.console();
    if (cons != null) {
        System.out.println("Enter single character: ");
        char c = (char) cons.reader().read();
        System.out.println(c);
    }else{
        System.out.println(cons);
    }
    

    输出:

    代码在macbook pro上测试,java版本为“1.6.0_37”

    【讨论】:

      【解决方案5】:

      sc.next().charat(0)............是用户根据运行时输入的数字输入字符的方法

      示例: sc.next().charat(2)------------>>>>>>>>

      【讨论】:

        【解决方案6】:
        Scanner sc = new Scanner (System.in)
        char c = sc.next().trim().charAt(0);
        

        【讨论】:

        • 请在您的代码中添加解释。这个答案比已经存在和接受的答案增加了什么?
        猜你喜欢
        • 2012-12-06
        • 1970-01-01
        • 2015-05-02
        • 1970-01-01
        • 1970-01-01
        • 2015-02-14
        • 1970-01-01
        相关资源
        最近更新 更多