我一直致力于让这个计划发挥作用。我让程序读取我创建的文件census2000
和census2010
时遇到了一些麻烦。这些包含了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);
}
}
我做错了什么?
答案 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。