如何处理 Java 中的一维数组的跳过输入

How to Deal with Skipping Input for 1-Dimensional Array in Java

在此程序中,该用户将有机会生成自己的单词搜索。在程序的开始,用户将看到一个指令菜单,他们可以在这些选项中进行选择: 1. 创建单词搜索 2.打印单词搜索 3.查看单词搜索的解决方案 4.退出程序

选择创建词搜索时,系统会要求用户逐行输入他们选择的词。这些词将存储在一维数组中。用户必须输入最少 20 个单词,最多 260 个。在每批 20 个单词时,系统会询问用户是否要添加更多单词。如果他们不这样做,程序将直接跳转到将一维数组转换为数组列表,然后创建单词搜索。如果用户选择添加更多的单词,程序将提示him/her输入更多的单词,直到达到最大单词数。选项 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);    

根据 this chat 的讨论,错误在 for 循环中

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

words.size() 是 0,所以要解决这个问题 你应该使用

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

words.size() 更改为 260,其中 260 是用户可以输入的最大字数。