如何根据行号打印标签

时间:2016-11-06 15:06:00

标签: java

我正在尝试编写一个程序来输出用户输入的一组2个数组。它是一个诗歌生成器,用户输入一些名词后跟一些形容词,然后我的程序随机地将形容词和名词结合起来并在屏幕上显示。在已经显示之后,不能再次选择名词或形容词。我的问题是我必须根据行打印一定数量的标签,然后打印诗组合。例如,第1行= 1个选项卡,第2行= 2个选项卡等

以下是所需输出的示例:

https://postimg.org/image/5mp3niqvx/

这是我的代码:

Payments

}

1 个答案:

答案 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