1

私は学校のプロジェクトに取り組んでおり、現在の状況に困惑しています。setDigit()プロジェクトを実行すると、VM がループに陥っているように見え、ロードされません (CombinationLock クラスメソッドの文字を入力できるコンソールがポップアップするはずです)。クラスの for ループと関係があると思いますInterface.java。誰かが見て、私を正しい方向に導くことができれば、それは大歓迎です。本当にありがとう!

インターフェイス.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);
        }
    }
}

CombinationLock.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配列を長さとして初期化 しました。これは、 を呼び出しているときの原因です。初期化を修正してください。3 つの入力をキャプチャしたいと考えています。その場合は、 以下のように長さ 3 で初期化してください。CombinationLock0String[] combo = {};ArrayIndexOutOfBoundsExceptioncombo.setDigit(ltr.charAt(0), i);comboCombinationLock

     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.printlnまたはを使用したことがないため、ポップアップしませんでしSystem.out.printた。その後、コンソールがポップアップし、データを入力できるようになりました。あなたのすべての提案と助けに感謝します!

于 2012-10-29T02:13:48.310 に答える