寻找最小和最大的人口和平均数

时间:2013-04-06 00:39:59

标签: java average delimiter

我一直致力于让这个计划发挥作用。我让程序读取我创建的文件census2000census2010时遇到了一些麻烦。这些包含了2000年和2010年的50个州及其人口。我相信我的其他计划是正确的。我被告知使用方法来找到最小的人口,最大的人口和平均数。这是2000文件中的两行:

Alabama 4447100

Alaska 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);
    }
      }

我做错了什么?

2 个答案:

答案 0 :(得分: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]);
}

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

答案 1 :(得分:0)

在文件加载后/你需要调用checksmall,checklargest和checkAverage。