【发布时间】:2017-08-13 09:01:14
【问题描述】:
我有一个 txt 的学生分数,每一行都是一个新学生。我想将每个学生的所有第一个标记添加到一个数组中,然后将所有第二个标记添加到一个不同的数组中等等。每个数组都是模块,然后我有方法来找到这些模块标记的平均值和中值等,但是我努力阅读每一行,然后添加每一行的第一个值等。
public interface StatCalculator {
double[] CE1014FY = {};
double[] CE1014SP = {};
double[] CE1414AU = {};
double[] CE1414FY = {};
double[] CE1424AU = {};
double[] CE1424FY = {};
double[] CE1514AU = {};
double[] CE1524SP = {};
double[] CE1534AU = {};
double[] CE1544SP = {};
double[] CE1554SP = {};
double[] CE1614AU = {};
double[] CE1624SP = {};
double[] CE1634AU = {};
double[] CE1644SP = {};
static void get(){
try {
File file = new File("M:\\Documents\\ce201\\subversion\\resources\\marks.txt");
Scanner scanner = new Scanner(file);
for every line
CE1014FY.add(line[0]; //i want something like this
CE1014SP.add(line[1]
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
static double mean(double[] numbers){
double sum = 0;
for (int i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
System.out.println("mean: "+sum/numbers.length);
return sum / numbers.length;
}
public static double median(double[] numbers) {
Arrays.sort(numbers);
int middle = numbers.length/2;
if (numbers.length%2 == 1) {
System.out.println("median: "+numbers[middle]);
return numbers[middle];
} else {
System.out.println("median: "+(numbers[middle-1] + numbers[middle]) / 2.0);
return (numbers[middle-1] + numbers[middle]) / 2.0;
}
}
public static double lowerQ(double[] numbers) {
Arrays.sort(numbers);
int lqpos = (numbers.length+1)/4;
int lq= (int) (int) numbers[lqpos];
System.out.println("lower q: "+lq);
return lq;
}
public static double upperQ(double[] numbers) {
Arrays.sort(numbers);
int uqpos = 3*(numbers.length+1)/4;
int uq= (int) (int) numbers[uqpos];
System.out.println("upper q: "+uq);
return uq;
}
public static void main(String[] args) {
get();
mean(CE1014FY);
median(CE1014FY);
upperQ(CE1014FY);
lowerQ(CE1014FY);
}
}
然后是txt{
63,-1,-1,76,-1,-1,82,85,84,57,67,73,-1,-1,-1,-1,73
62,-1,-1,60,-1,-1,89,76,79,53,55,77,-1,-1,-1,-1,69
60,-1,-1,42,-1,-1,37,32,67,-1,44,56,37,-1,-1,-1,47
53,-1,-1,88,-1,-1,75,68,69,58,64,75,-1,-1,-1,-1,69
72,-1,-1,64,-1,-1,39,55,74,56,78,64,-1,-1,-1,-1,63
50,-1,-1,30,-1,-1,19,20,35,19,7,34,-1,-1,-1,-1,27
}
【问题讨论】:
-
您能否将您的问题缩小到更具体的问题?就目前而言,我认为我必须将您的代码拉入 IntelliJ 并对其进行调试以查看问题所在。
-
@TimBiegeleisen 我希望将每行的第一项添加到第一个数组中
-
marks.txt的格式是什么?
-
@brad 它的 130 行 17 个数字,例如:-1、20、35、45、-1 10...等 -1 表示他们没有使用模块
-
首先我认为你应该使用 List
而不是 Array,因为 arary 没有 add 方法并且是静态的,这意味着你不能改变数组的大小,但是你可以改变列表的大小。我们还需要一个marks.txt 内容的示例以及您希望在这些java 对象中存储的内容。
标签: java arrays java.util.scanner