2

ユーザーが入力した単語で配列を埋めようとしています。各単語は、前の単語より 1 文字長く、次の単語より 1 文字短くする必要があります。
それらの長さは、2 から数えて表の行インデックスに等しくなります。単語は最終的に、 A
AB
ABC
ABCDのような片側ピラミッドを作成します。

Scanner sc = new Scanner(System.in);
System.out.println("Give the height of array: ");
height = sc.nextInt();
String[] words = new String[height];
for(int i=2; i<height+2; i++){
    System.out.println("Give word with "+i+" letters.");
    words[i-2] = sc.next();
    while( words[i-2].length()>i-2 || words[i-2].length()<words[i-3].length() ){
        words[i-2] = sc.next();
    }
}

要件を満たすためにスキャナーから読み取る単語を制限するにはどうすればよいですか?現在、while ループはスキャナーにまったく影響しません:/

これは宿題ではありません。私は単純なアプリケーションを作成してから、そのための gui を作成しようとしています。

4

1 に答える 1

1
  • あなたは読んheightでいませんでしたScanner(値は何ですか?)
  • List<String>およびその他の動的に成長可能なデータ構造の使用が許可されていませんか?
  • 長さの要件が満たされない場合はどうなりますか?
  • なぜ2-2オフセットなのですか?
    • の場合i = 2は、 にもアクセスしますwords[i-3]。どちらが投げますかArrayIndexOutOfBoundsException

ロジックをより明確にする書き直しは次のとおりです。

    Scanner sc = new Scanner(System.in);

    System.out.println("Height?");
    while (!sc.hasNextInt()) {
        System.out.println("int, please!");
        sc.next();
    }
    final int N = sc.nextInt();

    String[] arr = new String[N];
    for (int L = 1; L <= N; L++) {
        String s;
        do {
            System.out.println("Length " + L + ", please!");
            s = sc.next();
        } while (s.length() != L);
        arr[L - 1] = s;
    }

    for (String s : arr) {
        System.out.println(s);
    }

関連する質問

于 2010-05-15T00:34:04.667 に答える