使用扫描仪时变量不会打印到控制台
Variable won't print out to console when using scanners
代码如下:
导入java.util.Scanner;
public class 你好{
public static void main(String[] args) {
System.out.println("What is your name?");
Scanner firstScanner = new Scanner(System.in);
String imput = firstScanner.nextLine();
if (imput.length() > 6 ) {
System.out.println("That's quite a long name!");
}
else {
System.out.println("A nice and consise name you have.");
}
imput = firstScanner.nextLine();
if (imput == "Thank you") {
System.out.println("Yes, so how many siblings do you have?");
}
else {
System.out.print("Aren't you suppose to say 'Thank you' when someone complements you?");
}
}
}
当我在控制台中键入 "Thank you" 时,它仍然显示 "Aren't you suppose to say 'Thank you' when someone complements you?",即使我完全按照我声明的方式键入它。为什么它不问我有几个兄弟姐妹?
抱歉,如果这很难理解。
使用字符串 equals() 方法检查 if 语句中的相等性。现在它返回 false 因为它只检查内存位置而不是字符串的值。也尝试使用 equalsignorecase 方法使其更健壮。
那是因为Java中的==
运算符比较的是两个值是否相同。对于像 int
这样的原语,这很好用。但是对象,String
是对象,比较的是两个对象是否相同,而不是内容是否相等。
可能存在两个不同的 String 对象,表示完全相同的文本,但却是两个不同的对象。
所以总是使用
string1.equals(string2)
或
string1.equalsIgnoreCase(string2)
用于字符串比较。
代码如下:
导入java.util.Scanner;
public class 你好{
public static void main(String[] args) {
System.out.println("What is your name?");
Scanner firstScanner = new Scanner(System.in);
String imput = firstScanner.nextLine();
if (imput.length() > 6 ) {
System.out.println("That's quite a long name!");
}
else {
System.out.println("A nice and consise name you have.");
}
imput = firstScanner.nextLine();
if (imput == "Thank you") {
System.out.println("Yes, so how many siblings do you have?");
}
else {
System.out.print("Aren't you suppose to say 'Thank you' when someone complements you?");
}
}
}
当我在控制台中键入 "Thank you" 时,它仍然显示 "Aren't you suppose to say 'Thank you' when someone complements you?",即使我完全按照我声明的方式键入它。为什么它不问我有几个兄弟姐妹?
抱歉,如果这很难理解。
使用字符串 equals() 方法检查 if 语句中的相等性。现在它返回 false 因为它只检查内存位置而不是字符串的值。也尝试使用 equalsignorecase 方法使其更健壮。
那是因为Java中的==
运算符比较的是两个值是否相同。对于像 int
这样的原语,这很好用。但是对象,String
是对象,比较的是两个对象是否相同,而不是内容是否相等。
可能存在两个不同的 String 对象,表示完全相同的文本,但却是两个不同的对象。
所以总是使用
string1.equals(string2)
或
string1.equalsIgnoreCase(string2)
用于字符串比较。