我正在编写代码以按字母顺序排列3个名字,当我尝试编译时,我得到3'非法开始表达'错误,3'不是语句'错误,2'否则没有'错误全部在代码中具有'if else if else if'的部分内。我多次看过它,我无法弄清楚我写的是什么错,可以提供帮助吗?
import java.util.Scanner;
public class Hw2pr3{
public static void main(String[] args){
String name1;
String name2;
String name3;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter first name: ");
name1 = keyboard.nextString();
System.out.print("Enter second name: ");
name2 = keyboard.nextString();
System.out.print("Enter third name: ");
name3 = keyboard.nextString();
if(name1.compareTo(name2) < 0) && (name1.compareTo(name3) < 0) && (name2.compareTo(name3) < 0);
{System.out.println(name1 + name2 + name3);}
else if(name2.compareTo(name1) < 0) && (name2.compareTo(name3) < 0) && (name1.compareTo(name3) < 0);
{System.out.println(name2 + name1 + name3);}
else if(name3.compareTo(name1) < 0) && (name3.compareTo(name2) < 0) && (name1.compareTo(name2) < 0);
{System.out.println(name3 + name1 + name2);}
}
}
答案 0 :(得分:1)
您需要使用括号括起boolean
条件的整个if
表达式。现在,你的括号只围绕第一部分,其余的围绕它。变化
if(name1.compareTo(name2) < 0) && (name1.compareTo(name3) < 0) &&
(name2.compareTo(name3) < 0);
到
if( (name1.compareTo(name2) < 0) && (name1.compareTo(name3) < 0) &&
(name2.compareTo(name3) < 0) )
通过在整个表达式周围放置括号。你还需要删除那里不需要的分号,如果存在,它将作为if
块的主体。这个分号还具有从else
中分离if
的效果,这是您的另一个错误。
答案 1 :(得分:0)
您需要将一个布尔表达式括在括号中。另一个(如提到的另一张海报)是删除不必要的分号。
你有
if(expression) && (expression) && (expression)**;** {
statement;
} else if (expression) && (expression) && (expression)**;** {
statement;
} else if (expression) && (expression) && (expression)**;** {
statement;
}
但你需要
if**(**(expression) && (expression) && (expression)**)** {
statement;
} else if **(**(expression) && (expression) && (expression)**)** {
statement;
} else if **(**(expression) && (expression) && (expression)**)** {
statement;
}