Как справиться с пропуском ввода для 1-мерного массива в Java - PullRequest
0 голосов
/ 15 января 2019

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

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

Программа не позволяет мне вводить слова в массив слов. При запуске программы пользователь вводит «1» для создания поиска слов, затем программа инструктирует пользователя вводить слова построчно, но не дает пользователю ничего вводить. На экране консоли отображается «Word Search создан», а прямо под ним написано «Неверный ввод, попробуйте еще раз». Я создал список массивов сразу после представления программы: 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);				

1 Ответ

0 голосов
/ 15 января 2019

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

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

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

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

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

...