Наполнение массива постепенно с данными пользователя

StackOverflow https://stackoverflow.com/questions/2838411

Вопрос

Я пытаюсь заполнить массив словами, вводами пользователями. Каждое слово должно быть одна буква длиннее, чем предыдущая и одна буква короче, чем следующий. Их длина равна индексу строки таблицы, подсчитывая от 2. Слова, наконец, создаст одностороннюю пирамиду, как:
А.
Аб
Abc.
Абгад

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 для него.

Это было полезно?

Решение

  • Вы не читали 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);
    }

Связанные вопросы

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top