Наполнение массива постепенно с данными пользователя
-
26-09-2019 - |
Вопрос
Я пытаюсь заполнить массив словами, вводами пользователями. Каждое слово должно быть одна буква длиннее, чем предыдущая и одна буква короче, чем следующий. Их длина равна индексу строки таблицы, подсчитывая от 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);
}
Связанные вопросы
Не связан с StackOverflow