“非法表达”新秀的错误?

时间:2013-04-10 19:53:15

标签: java compiler-errors

我需要知道为什么我在第18-21行收到此错误。我觉得它可能是一个与支架相关的问题,但我无法弄明白。

import java.util.Scanner;

public class Proj4_1 {

public static void main(String [] args) {
    Scanner reader = new Scanner(System.in);

    int numb1 =;
    int numb2 =; 
    int div =;
    int remainder =;

    System.out.println("Enter a number: ");
    numb1 = reader.nextint();

    System.out.print(numb1);

    System.out.println("Enter another number: ");
    numb2 = reader.nextint();

    System.out.print(numb2);

    if (numb1>numb2){
        div = numb1 / numb2;
        remainder = numb1 % numb2;
    }else{
    if (numb2>numb1) 
        div = numb2 / numb1;
        remainder = numb2 % numb2;  
    }

    System.out.println("The answer quotient is " +div+ "with a remainder of" +remainder);

任何帮助或建议将不胜感激,提前感谢

1 个答案:

答案 0 :(得分:6)

好吧,看看这个:

int numb1 =;

您期望初始值是什么?

您可以声明变量而不为其赋值,如下所示:

int numb1;

...但是你不能在没有给出值的情况下离开=

但是,我个人等待声明变量,直到你准备给它一个值:

public static void main(String [] args) {
    Scanner reader = new Scanner(System.in);

    System.out.println("Enter a number: ");
    // Fixed case of nextInt as well...
    int numb1 = reader.nextInt();

    System.out.print(numb1);

    System.out.println("Enter another number: ");
    int numb2 = reader.nextInt();

    System.out.print(numb2);

    // etc
}

您不必在方法顶部声明所有变量,如果您只是在首次需要它们的地方声明它们,那么您的代码通常会更清晰。

编辑:还有这个if块不正确:

if (numb2>numb1)
    div = numb2 / numb1;
    remainder = numb2 % numb2;  
}

你错过了开场大括号,这意味着你有效地得到了这个:

if (numb2>numb1) {
    div = numb2 / numb1;
}
remainder = numb2 % numb2;  
// This closing brace is now dangling!
}

你真的是这个意思:

if (numb2 > numb1) {
    div = numb2 / numb1;
    remainder = numb2 % numb2;  
}

请注意,如果您经常编译代码,那么有很多不同的错误,您将无法做到这一点。一旦出现编译时错误,就应该停止,确保理解并修复它。这样你就不会遇到大量的问题,试图立刻去理解。此外,您不必担心多个错误相互影响,这会使生活变得更加艰难。