有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的Length方法,在输入字符串上使用时不会产生预期的结果

我的初始代码未产生预期结果:

import java.util.Scanner;
class Strings {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       System.out.println("Enter your word: ");
       String word1 = sc.next();
       System.out.println(word1.length());
       sc.close();
    }
}

输出:

 tk@localhost:~$ java Strings
                 Enter your word: 
                 avada kedavra
                 5

这不是我绳子的长度。 但当我尝试此操作时(没有用户输入):

class Strings {
    public static void main(String[] args) {
        String str = new String("avada kedavra");
        System.out.println(str.length());
    }
}

输出:

 tk@localhost:~$ java Strings  
                 13

它起作用了! 那么,当我从用户那里获取输入时,为什么它不起作用呢?我错过了什么


共 (2) 个答案

  1. # 1 楼答案

    简而言之:RTFM

    对于click lazy:Scanner在调用next时返回“下一个令牌”。令牌是通过采用一种模式计算的,默认情况下为“所有空白”。所以你调用next返回下一个单词,而不是你想要的完整行

    在实例化Scanner或调用nextLine时设置一个拟合模式

  2. # 2 楼答案

    默认情况下,^{}查找并返回下一个完整的标记。默认情况下,标记是一个单词,用空格或换行符(\p{javaWhitespace}+)分隔

    在第一个例子中,word1 = "avada",长度为5

    使用sc.nextLine()获得完整的行