Как справиться с пропуском ввода для одномерного массива в Java

В этой программе у этого пользователя будет возможность генерировать собственный поиск слов. В начале программы пользователю будет показано меню с инструкциями, в котором он может выбрать один из следующих вариантов: 1. Создайте поиск по слову 2. Распечатайте поиск слова. 3. Просмотрите решения для поиска слов. 4. Выйдите из программы.

При выборе создания поиска по словам пользователю будет предложено ввести слова по своему выбору, строка за строкой. Эти слова будут храниться в одномерном массиве. Пользователь должен будет ввести минимум 20 слов, максимум 260. В каждом пакете из 20 слов пользователя спрашивают, хотят ли они добавить больше слов. Если они этого не сделают, программа сразу перейдет к преобразованию одномерного массива в список массивов, а затем создаст поиск слова. Если пользователь решит добавить больше слов, программа предложит ему / ей ввести больше слов, пока они не достигнут максимального количества слов. Варианты 2 и 3 просто включают несколько циклов и использование нескольких методов для отображения организованного вывода пользователю.

Программа не позволяет вводить слова в массив слов. При запуске программы пользователь вводит «1» для поиска слов, затем программа инструктирует пользователя вводить слова построчно, но не позволяет пользователю ничего вводить. На экране консоли написано «Word Search created», а прямо под ним - «Invalid input, try again». Я создал список массивов сразу после знакомства с программой: List<String> words = new ArrayList<>();

Я попытался выяснить, где я здесь ошибся, и даже попытался найти это, но ничто не решило мою проблему.

do {		
	WordArray wordArr = new WordArray();		
	showOptions();			
	choice = input.nextInt(); // Get choice input
	if (choice == 1) {				
		System.out.println("Enter words of your choice line-by-line. You can enter a maximum of 260 words (i.e., 10 words per letter)");					
		System.out.println("");				
		// This for loop will loop around with it`s body the user decides they have added enough words and wish to proceed				
		for (int i = 0; i < words.size(); i++) {					
			words.add(input.nextLine());		            
			if ((i + 1) % 20 == 0 && i != 0) { 						
				// For every batch of 20 words entered, the program will ask the user this...		            	
		        System.out.print("Do you want to keep adding words? Enter Y/N: ");		            	
		        String answer = input.next().toUpperCase();		            	
		        if (answer.equals("Y")) {
		            words.add(input.nextLine());	    		
		        } if (answer.equals("N")) {		       		
		    		break;		            		
		        }//end of inner if		            	
		    }//end of outer if		            
		 }//end of for loop				
		createWordSearch(words);				

в чем ценность words.size()?

elbraulio 15.01.2019 20:00

Это длина слова Array List

Yashvi Shah 15.01.2019 20:03

в начале это 0?

elbraulio 15.01.2019 20:04

Ну да, индекс начинается с 0, так что да

Yashvi Shah 15.01.2019 20:04

хорошо, тогда этот for (int i = 0; i < words.size(); i++) такой же, как for (int i = 0; i < 0; i++), это означает, что ваш цикл for никогда не выполнялся

elbraulio 15.01.2019 20:05

У меня такая же проблема.

Yashvi Shah 15.01.2019 20:10

Позвольте нам продолжить обсуждение в чате.

elbraulio 15.01.2019 20:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

из обсуждения этот чат, ошибка была в цикле for

for (int i = 0; i < words.size(); i++)

были words.size() равны 0, поэтому исправить это вы должны использовать

for (int i = 0; i <= 260; i++)

изменение words.size() на 260, где 260 - максимальное количество слов, которое может ввести пользователь.

Спасибо! Я написал вам в нашем чате.

Yashvi Shah 15.01.2019 20:48

@YashviShah окей, я тебе ответил. Мне нужно больше контекста, чтобы дать вам решение

elbraulio 15.01.2019 20:57

Хорошо, ваш ответ действительно помог мне, и я исправил это в других областях моего кода, но я все еще сталкиваюсь с исключениями ArrayOutOfBound ... проверьте обсуждение в чате

Yashvi Shah 16.01.2019 00:11

Другие вопросы по теме