在以下代码中:
import java.util.*;
public class test{
public static void main(String[] args){
System.out.println("".length());
}
}
输出为0。
但在以下代码中:
import java.util.*;
public class test{
public static void main(String[] args){
System.out.println("Please enter a string: ");
Scanner stdin = new Scanner(System.in);
String st = stdin.next();
System.out.println(st.length());
System.out.println(st.equals(""));
}
}
当我输入"或一个空字符串时,输出为:
2
false
我将std.next()
更改为std.nextLine()
,但输出相同。
当我将System.out.println(st.equals(""));
更改为System.out.println(st.equals(" "));
时然后我输入"或空间输出为:
1
false
为什么?
输入 ""
是两个字符,这就是为什么您获得长度2和 ""
不等于一个空字符串的原因。至于第二种情况,当您输入" "
时,您的长度为1,因为String::next()
只能读取用户输入直到空间。它无法读取两个被空间隔开的单词,并且再次不等于一个空字符串。要得出结论,当使用String::next()
时,您无法输入空字符串,甚至没有装满Whitespaces的字符串。您需要使用String::nextLine()
。
在读取用户输入时,我们不表示空字符串为""
。一个空字符串是一个字符串,其长度为零。