【问题标题】:How to Deal with Skipping Input for 1-Dimensional Array in Java如何在 Java 中处理一维数组的跳过输入
【发布时间】:2019-06-09 20:05:09
【问题描述】:

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

选择创建单词搜索时,系统会要求用户逐行输入他们选择的单词。这些单词将存储在一维数组中。用户必须输入最少 20 个词,最多 260 个。每批输入 20 个词,系统会询问用户是否要添加更多词。如果他们不这样做,程序将直接将一维数组转换为数组列表,然后创建单词搜索。如果用户选择添加更多单词,程序将提示他/她输入更多单词,直到达到最大单词数。选项 2 和 3 将只涉及一些循环并使用一些方法向用户显示有组织的输出。

程序不允许我将单词输入单词数组。运行程序时,用户输入“1”创建单词搜索,然后程序指示用户逐行输入单词,但不让用户输入任何内容。控制台屏幕显示“已创建单词搜索”,在此下方显示“输入无效,重试”。我在引入程序后立即创建了数组列表: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()的值是多少?
  • 是单词Array List的长度
  • 开头是0?
  • ok,那么这个for (int i = 0; i &lt; words.size(); i++)for (int i = 0; i &lt; 0; i++)一样,说明你的for循环从来没有被执行过

标签: java oop arraylist input wordsearch


【解决方案1】:

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 是用户可以输入的最大字数。

【讨论】:

  • 谢谢!我在我们的聊天讨论中给你发了消息。
  • @YashviShah 好的,我回答了你。我需要更多上下文来给你一个解决方案
  • 好吧,你的回答对我有帮助,我确实在代码的其他区域解决了这个问题,但我仍然遇到 ArrayOutOfBound 异常...查看聊天讨论
猜你喜欢
  • 2017-09-20
  • 2022-08-23
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
相关资源
最近更新 更多