在此程序中,该用户将有机会生成自己的单词搜索。在程序的开始,将向用户显示一个指令菜单,他们可以在以下选项中进行选择: 1.创建单词搜索 2.打印单词搜索 3.查看单词搜索的解决方案 4.退出程序
当选择创建单词搜索时,将要求用户逐行输入他们选择的单词。这些单词将存储在一维数组中。用户将必须输入最少20个单词,最多输入260。在每20个单词的批次中,将询问用户是否要添加更多单词。如果没有,程序将直接跳转到将一维数组转换为数组列表,然后创建单词搜索。如果用户选择添加更多单词,程序将提示他/她输入更多单词,直到达到最大单词数量为止。选项2和3仅涉及一些循环,并使用一些方法向用户显示组织的输出。
程序不允许我将单词输入到word数组中。运行该程序时,用户输入“ 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);
答案 0 :(得分: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是用户可以输入的最大单词数。