-1

我一直在努力让这个程序正常工作。我在让程序读取我创建的文件时遇到了一点麻烦,census2000并且census2010. 这些包含 2000 年和 2010 年的 50 个州及其人口。我相信我的程序的其余部分是正确的。我被告知要使用方法来找到最小的人口、最大的人口和平均值。这是 2000 文件中的两行:

阿拉巴马州 4447100

阿拉斯加 626932

这是我的程序:

public static void main(String[] args) throws IOException {
        String state = "";
        int population = 0;
        int p = 0, s = 0, pop = 0, stat = 0, populate = 0, sum = 0;
        File f = new File("census2000.txt");
        Scanner infile = new Scanner(f);
        infile.useDelimiter("[\t|,|\n|\r]+");
        while (infile.hasNext()) {
            checksmall(p, s);
            checklargest(pop, stat);
            checkAverage(populate, sum);
            population = infile.nextInt();
            state = infile.next("/t");
            System.out.println(state + "has" + population + "people");
        }

        System.out.println(state + "has smallest population of" + population);
        prw.close();
    }

    public static boolean checksmall(int p, int s) {
        boolean returnValue;
        if (p < s) {
            returnValue = true;
        } else {
            returnValue = false;
        }
        return (returnValue);
    }

    public static boolean checklargest(int pop, int stat) {
        boolean returnVal;
        if (pop > stat) {
            returnVal = true;
        } else {
            returnVal = false;
        }
        return (returnVal);
    }

    public static int checkAverage(int populate, int sum) {
        int retVal;
        retVal = populate + sum;
        return (retVal);
    }
      }

我究竟做错了什么?

4

2 回答 2

1

我相信问题出在这里:

state = infile.next("/t");

我认为您要做的是跳过文件中的选项卡并读取状态?您可以通过读取该行然后使用\t分隔符分割该行来做到这一点。

String line;
while (infile.hasNextLine()){
    line = infile.nextLine();
    String data[] = line.split("\\s+");
    state = data[0];
    population = Integer.parseInt(data[1]);
}

编辑:也正如另一个答案指出的那样,您正在尝试在读取文件数据之前对其执行功能。

于 2013-04-06T00:54:37.647 回答
0

您需要在文件加载之后/期间调用 checksmall、checklargest 和 checkAverage。

于 2013-04-06T00:54:26.450 回答