代码生成'否则没有','不是声明'和'非法的表达开始'错误

时间:2014-10-01 00:15:23

标签: java

我正在编写代码以按字母顺序排列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);}
    }
}

2 个答案:

答案 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;
}