标识符预期和非法启动类型的几个错误。困惑

时间:2016-03-27 23:28:42

标签: java compiler-errors identifier

整个程序应该进入组合锁并接受组合。这是我遇到问题的代码。

import java.util.*;  // needed for Scanner

public class CombinationLock extends Lock
{
   // Instance Variables
   private String combination;

   Scanner keyboard = new Scanner(System.in);

   System.out.println("Enter Combination --> ");
   String combo = keyboard.nextLine();

   if(combination = combo)
   {
    super.open();
   }

public String toString()
   {
    String str = super.toString() + "\n" +
                 "Combination = " + combination + "\n";  
    return str;
   }

public void setCombination()
{

}

public boolean getCombination()
{

}

public CombinationLock()
{
   super();    // call the default constructor of the Lock class
   combination = "";
}

public CombinationLock(String combo)
{
    super();
    combination = combo;
}


}

这些是我得到的错误

--------------------Configuration: <Default>--------------------
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:10: error: <identifier> expected
   System.out.println("Enter Combination  ");
                     ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:10: error: illegal start of type
   System.out.println("Enter Combination  ");
                      ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:13: error: illegal start of type
   if(combination = combo)
   ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:13: error: <identifier> expected
   if(combination = combo)
                 ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:13: error: ';' expected
   if(combination = combo)
                   ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:13: error: illegal start of type
   if(combination = combo)
                         ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:13: error: <identifier> expected
   if(combination = combo)
                          ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:14: error: ';' expected
   {
    ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:15: error: illegal start of type
    super.open();
         ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:18: error: class, interface, or enum expected
public String toString()
       ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:22: error: class, interface, or enum expected
    return str;
    ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:23: error: class, interface, or enum expected
   }
   ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:25: error: class, interface, or enum expected
public void setCombination()
       ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:30: error: class, interface, or enum expected
public boolean getCombination()
       ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:35: error: class, interface, or enum expected
public CombinationLock()
       ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:38: error: class, interface, or enum expected
   combination = "";
   ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:39: error: class, interface, or enum expected
}
^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:41: error: class, interface, or enum expected
public CombinationLock(String combo)
       ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:44: error: class, interface, or enum expected
    combination = combo;
    ^
C:\Users\waki_\OneDrive\Documents\CombinationLock.java:45: error: class, interface, or enum expected
}
^
20 errors

Process completed.

我不确定是什么导致了这个问题。我试图找到其他答案,但没有一个与我的问题相关。

3 个答案:

答案 0 :(得分:1)

Java语句必须出现在代码块中。因此,在这种情况下,您在此类中的方法之外的代码需要被{}包围。

但看起来你正在尝试阅读输入等。理想情况下,你要做的是在这个类中创建一个main方法,在这个方法中创建CombinationLock的实例并在main方法中读取输入。

答案 1 :(得分:1)

您正在函数之外编写语句。确保所有语句都在函数内部,并且所有实例变量都有范围标识符。

具体来说,确保以下语句在函数内:

Scanner keyboard = new Scanner(System.in);

System.out.println("Enter Combination --> ");
String combo = keyboard.nextLine();

if(combination = combo)
{
    super.open();
}

答案 2 :(得分:1)

你需要纠正一些事情:

  1. 获取用户输入的代码应该在方法内。 Java不允许在方法或块之外编写这样的逻辑。
  2. 如果条件没有正确实施。 Java期望if if中的表达式返回boolean。但是,=中使用的if运算符会生成String。对于字符串比较,我们应该在if。
  3. 中使用string1.equals(string2)