我正在尝试编写一个程序来输出用户输入的一组2个数组。它是一个诗歌生成器,用户输入一些名词后跟一些形容词,然后我的程序随机地将形容词和名词结合起来并在屏幕上显示。在已经显示之后,不能再次选择名词或形容词。我的问题是我必须根据行打印一定数量的标签,然后打印诗组合。例如,第1行= 1个选项卡,第2行= 2个选项卡等
以下是所需输出的示例:
https://postimg.org/image/5mp3niqvx/
这是我的代码:
Payments
}
答案 0 :(得分:1)
代码中的错误是这部分:
for (int j = 0; j < i; j++)
{
System.out.print("\t");
}
此处,i
是您发现非重复名词和形容词后的迭代次数。
相反,添加一个名为numTabsToPrint
或其他内容的新变量,用于跟踪每行中必须打印的多少个标签,并在打印每一行后将其增加1。
这是代码的更改片段,我已明确评论更改的行:
boolean[] noDuplicate1 = new boolean[numNouns];
boolean[] noDuplicate2 = new boolean[numAdjectives];
int numTabsToPrint = 0; // Tracks number of tabs to print on each line.
for(int i = 0; i < 1000; i++)
{
int num1 = (int) (Math.random() * numNouns);
int num2 = (int) (Math.random() * numAdjectives);
if (noDuplicate1[num1] == false && noDuplicate2[num2] == false)
{
for (int j = 0; j < numTabsToPrint; j++) // change 'i' to 'numTabsToPrint' in your original code.
{
System.out.print("\t");
}
System.out.println(adjectives[num2] + nouns[num1]);
noDuplicate1[num1] = true;
noDuplicate2[num2] = true;
numTabsToPrint++; // increment after printing current line.
}
}
完整代码的工作示例可在此处找到:http://ideone.com/Gf71Ty