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

ins*_*_tk 0 java string java.util.scanner

我的初始代码没有产生所需的结果:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

 tk@localhost:~$ java Strings
                 Enter your word: 
                 avada kedavra
                 5
Run Code Online (Sandbox Code Playgroud)

这不是我的字符串的长度.但当我尝试这个(没有用户输入):

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

输出:

 tk@localhost:~$ java Strings  
                 13
Run Code Online (Sandbox Code Playgroud)

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

Der*_*lin 10

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

所以在你的第一个例子中,word1 = "avada"长度为5.

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

  • @Tom我知道.我讨厌内部搜索.我已经"收藏"了我的前三名(NPE,数组越界,字符串越界),这样我就可以更快地关闭那些;-) (2认同)