“非法表达开始”菜鸟错误?

问题描述:

我需要知道为什么我在第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); 

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

+0

编译器错误不能同时出现运行时错误。 – 2013-04-10 19:54:56

+0

'int numb1 =;'对我来说看起来有点奇怪,我认为它可能是你的问题的地方 – 2013-04-10 19:55:23

+0

@LuiggiMendoza如果编译器本身崩溃怎么办? – 2013-04-10 19:55:45

好吧,看看这个:

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

请注意,如果您经常编译代码,您将不会得到如此多的不同的错误。只要你得到一个编译时错误,你应该停下来,确保你理解它并修复它。这样,你永远不会面临绝大多数的问题来尝试去理解。另外,你不需要担心多个错误互相影响,这会让生活变得更加困难。

+0

我正在提示输入第二十三行第二十二行 – user2267726 2013-04-10 19:55:08

+0

@ user2267726:是的,但你期望用'='做什么声明呢? – 2013-04-10 19:55:26

+0

还有'if(numb2> numb1)sentence1; SENTENCE2; }(没有开头的括号)。 – 2013-04-10 19:56:07