我对Java有点新,我试图用正确的字符串编写这个简单的程序,使其打印出“密码输入”,当输入其他内容时,它会说“密码错误”。但是它给了我这个错误,我不知道如何解决,它在令牌'else',{expected“
import java.util.Scanner;
public class Main {
public static void main(String[] args){
String code = ("1908");
Scanner s = new Scanner(System.in);
String input;
System.out.println("Please enter password!");
input = s.nextLine();
if(input==code)
System.out.println("Password entered!");
} else { //<--- Syntax error on token 'else',{ expected
System.out.println("Wrong password!");
}
}
}
答案 0 :(得分:0)
在这一行if(input==code)
上,您忘记添加左括号,只需将{
添加到结尾即可。
所以看起来像
if(input==code) {
System.out.println("Password entered!");
} else {
System.out.println("Wrong password!");
}
编辑评论
System.out.println("Password entered!");
永远不会打印的原因是因为您使用的是==
运算符。当==
运算符用于比较对象时,它会检查对象是否引用内存中的相同位置。基本上它会检查对象名称是否引用了相同的内存位置。不应该使用==
的示例就像
// Create two Strings with the same text "abc"
String obj1 = new String("abc");
String obj2 = new String("abc");
// Compare the two Strings
if (obj1 == obj2) {
// Will never reach here and print TRUE
System.out.println("TRUE");
} else {
// Will always print FALSE
System.out.println("FALSE");
}
上面的代码将始终打印FALSE
,因为两个String对象并不位于内存中的同一位置 - 让我感到困惑!要说明何时使用==
,请参阅下面的代码
// Create a new string object
String obj1 = new String("abc");
// Create another new string object but assign obj1 to it.
String obj2 = obj1; // obj1 and obj2 are now located in the same place in memory.
// Compare the two objects
if (obj1 == obj2) {
// Will always print TRUE
System.out.println("TRUE");
} else {
// Will never print FALSE
System.out.println("FALSE");
}
在上面的代码中,我们的两个对象位于内存中的相同位置,因此在比较每个对象的内存引用时,它们在某种意义上是相同的。
但显然你不想比较你想要比较每个对象包含的String值的对象的内存引用。所以你需要看的是equals()
方法,我不会详细介绍这个方法,但它基本上比较了两个对象值而不是内存位置。看看下面的代码
// Create two Strings with the same text "abc"
String obj1 = new String("abc");
String obj2 = new String("abc");
// Compare the two String values using equals()
if (obj1.equals(obj2)) {
// Will always print TRUE because the two string values
// are equal/the same.
System.out.println("TRUE");
} else {
// Will never print FALSE
System.out.println("FALSE");
}
因此,使用我们刚刚了解的==
运算符和equals()
方法,我们可以在您的代码中使用它,所以请尝试更改为
// Using equals because you want to compare the String values
// not the reference to memory location for each object
if(input.equals(code)) {
// Should print true if input value is equal to code value.
System.out.println("Password entered!");
} else {
System.out.println("Wrong password!");
}
如果您还有问题,请发表评论,希望这有帮助。
答案 1 :(得分:0)
您没有使用{
在if()中打开'true'子句,因此当遇到} else
时,}
实际上会终止整个if()
if (...) {
...
} else {
...
}
if (...)
...
else {
...
}
1}}
它应该是以下任何一种:
{{1}}