1

我正在为学校做一个项目,现在我很难过。当我运行我的项目时,VM 似乎卡在一个循环中并且无法加载(应该会弹出一个控制台,允许我为 CombinationLock 类setDigit()方法输入字符)。我相信这与我Interface.java课堂上的 for 循环有关。如果有人可以看看并引导我朝着正确的方向前进,那将不胜感激。非常感谢!

接口.java

import java.util.*;
public class Interface
{
    public static void main() {
        Scanner in = new Scanner(System.in);
        CombinationLock combo = new CombinationLock();    

        for(int i = 0; i < 3; i++) {
            String ltr = in.nextLine();
            combo.setDigit(ltr.charAt(0), i);
            System.out.println("Digit " + i + " has been set to " + ltr);
        }
    }
}

组合锁.java

public class CombinationLock
{
    String[] combo = new String[3];

    public CombinationLock() { }

    public boolean setDigit(char letter, int index) {
        if (Character.isDigit(letter)) {
            return false;
        }
        combo[index] = String.valueOf(letter);
        return true;
    }

    public boolean unlock(String combo) {
        if (combo.length() > 3) {
            return false; //Longer then it can be, not valid
        }

        char[] comboArray = combo.toCharArray();
        for (char c : comboArray) {
            if (Character.isDigit(c)) {
                return false; //Contains numbers, not valid
            }
        }

        boolean valid = true;
        for (int i = 0; i < 3; i++) {
            if (combo.charAt(i) != comboArray[i] && valid == true) {
                valid = false;
                break;
            }
        }

        return valid;
    }
}
4

3 回答 3

2

您已在类中初始化 combo数组CombinationLock,长度0String[] combo = {};. 这是ArrayIndexOutOfBoundsException你打电话时的原因combo.setDigit(ltr.charAt(0), i);。请更正初始化。我相信您想捕获 3 个输入,在这种情况下,请 使用长度 3 进行初始化combo,如下所示:CombinationLock

     String[] combo = new String[3];
于 2012-10-29T02:04:06.997 回答
1

你的问题是(主要方法的签名是错误的)

 public static void main() {

它应该是

 public static void main(String[] args) {
于 2012-10-29T02:07:51.020 回答
0

我发现我的错误在哪里,使用 BlueJ IDE 必须在控制台显示之前向控制台输出一些内容并允许您输入数据,因此它从未弹出,因为我从未使用过System.out.printlnSystem.out.print. 这样做之后,控制台弹出并允许我输入我的数据。感谢您的所有建议和帮助!

于 2012-10-29T02:13:48.310 回答