Haiku Generator Java

时间:2013-04-10 19:16:42

标签: java arrays

我需要编写一个生成随机Haikus的程序。我的计划是让程序读入包含指定数量的音节名词,动词和形容词的文件,但我遇到编码问题。现在它看起来像这样:

package poetryproject;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Random;
import java.util.Scanner;



public class PoetryProject {

    public static void main(String[] args) throws FileNotFoundException {


        Random gen = new Random();

        Scanner adjectivesFile = new Scanner(new File("AdjectivesFile.dat"));
        Scanner nounFile = new Scanner(new File("NounFile.dat"));
        Scanner verbFile = new Scanner(new File("VerbFile.dat"));

        int adjectiveCount = adjectivesFile.nextInt();
        String[] adjectiveList = new String[adjectiveCount];
        for (int i = 0; i < adjectiveCount; i++) {
            adjectiveList[i] = adjectivesFile.nextLine();
        }
        adjectivesFile.close();

        int nounCount = nounFile.nextInt();
        String[] nounList = new String[nounCount];
        for (int i = 0; i < nounCount; i++) {
            nounList[i] = nounFile.nextLine();
        }
        nounFile.close();

        int verbCount = verbFile.nextInt();
        String[] verbList = new String[verbCount];
        for (int i = 0; i < verbCount; i++) {
            verbList[i] = verbFile.nextLine();
        }
        verbFile.close();

        for (int count = 1; count <= 1; count++) {
           System.out.printf("The %s %s \n",       adjectiveList[gen.nextInt(adjectiveList.length)]);
        }
        for (int count = 1; count <= 1; count++) {
            System.out.printf("%s %s \n", nounList[gen.nextInt(nounList.length)]);
        }
        for (int count = 1; count <= 1; count++) {
            System.out.printf("%s %s \n", verbList[gen.nextInt(verbList.length)]);
        }
     }
}

对于我的输出,我只得到“The”形容词部分。这是为什么?

哦,是的,我现在只是努力让第一行正确打印。

2 个答案:

答案 0 :(得分:4)

第一个printf()的格式说明符与参数不匹配:

System.out.printf("The %s %s \n", adjectiveList[gen.nextInt(adjectiveList.length)]);

这会抛出一个MissingFormatArgumentException,在打印出形容词部分后过早地结束你的程序。

答案 1 :(得分:1)

由于您没有为System.out.printf指定第二个参数,因此它将生成 在行找不到符号错误:

System.out.printf("The %s %s \n",adjectiveList[gen.nextInt(adjectiveList.length)]);
                          ^

删除第二个格式说明符并将其写为:

System.out.printf("The %s\n",       adjectiveList[gen.nextInt(adjectiveList.length)]);

这可以解决您的问题。