2つの配列を比較して、他の配列の同じインデックスを持つ基本的な計算をしようとしています。私は正しい答えを受け取っていないし、配列が正しく比較されていないためだと思う。ここに私のコードである:配列STD2がSTD1同じレコードの倍数と9つの数値レコード(重複)を含むが特定のインデックスを比較すると、配列ループが機能しない
y = 0;
for (x=0; x<std1.length; x++){
if (std1[x]==std2[y]){
sumhrs[x] += hrs[y];
mult[x] = hrs[y] * ngrd[y];
hold[x] = hold[x] + mult[x];
gpa[x] = hold[x]/sumhrs[x];
y++;
}
}
アレイSTD1 4つの数値レコードを含みます。他の配列(hrs、ngrdなど)は、配列std2に順番にレコードが含まれているため、同じ変数[y]にリンクされています。
Here is the current output: 205 Smart 4.0 A 400 Brent 0.0 NONE 155 Brown 0.0 NONE 150 Canon 0.0 NONEこれは宿題であり、私はこれを理解しようと多くの時間を費やしましたが、できません。この宿題の最終結果は、名前と成績の情報を持つ2つの学生ファイルからGPAを計算することです。私はファイルを配列に追加し、配列を特定のフォーマット(int、double、string)のユニークな配列に分割しましたが、GPAを計算している間はインデックスの精度を維持するためにすべての重複を保持しました。つまり、配列std2 [5]とhrs [5]は、インデックス[5]に1つの結合配列があったときと同じデータを保持していました。
ご協力いただければ幸いです。
おかげ
***編集:
私は私の完全なコードを追加するつもりだと私はここから引っ張ってる二つのファイル:
File 1tab delimited 205 Smart 400 Brent 155 Brown 150 Canon
File 2tab delimited 205 1 4.0 205 3 2.8 205 4 4.0 205 3 2.3 400 3 3.5 155 2 2.7 150 3 3.0 150 3 4.0 150 3 2.7
public static void main(String[] args) throws IOException {
FileInputStream in1 = new FileInputStream("c:/users/da/desktop/"
+ "file1.txt");
BufferedReader br1 = new BufferedReader(new InputStreamReader(in1));
FileInputStream in2 = new FileInputStream("c:/users/da/desktop/file2.txt");
BufferedReader br2 = new BufferedReader(new InputStreamReader(in2));
String[] file1array = new String[4];
String[] file2array = new String[9];
for (int j = 0; j < file1array.length; j++){
file1array[j] = br1.readLine();}
for (int j = 0; j < file2array.length; j++){
file2array[j] = br2.readLine();}
int i = 0;
int j = 0;
int x = 0;
int y = 0;
int index = 00;
int[] std1 = new int [file1array.length];
String[] name = new String [file1array.length];
int[] std2 = new int [file2array.length];
int[] hrs = new int [file2array.length];
double[] ngrd = new double [file2array.length];
double[] mult = new double [file2array.length];
double[] sumhrs = new double [file1array.length];
double[] hold = new double [file2array.length];
double[] gpa = new double [file1array.length];
String[] lgrd = new String [file1array.length];
String line1 = "";
String[] data1;
String line2 = "";
String[] data2;
for (x=0; x<file1array.length; x++){
line1 = file1array[x];
data1 = line1.split("\t");
std1[x] = Integer.parseInt(data1[0]);
name[x] = data1[1];}
for (x=0; x<file2array.length; x++){
line2 = file2array[x];
data2 = line2.split("\t");
std2[x] = Integer.parseInt(data2[0]);
hrs[x] = Integer.parseInt(data2[1]);
ngrd[x] = Double.parseDouble(data2[2]);}
y = 0;
for (x=0; x<std1.length; x++){
if (std1[x]==std2[y]){
sumhrs[x] += hrs[y];
mult[x] = hrs[y] * ngrd[y];
hold[x] = hold[x] + mult[x];
gpa[x] = hold[x]/sumhrs[x];
y++;
}
}
for (x=0; x<gpa.length; x++){
if (gpa[x] <= 4.0){
lgrd[x] = "A";}
if (gpa[x] < 3.4){
lgrd[x] = "B";}
if (gpa[x] < 3.7){
lgrd[x] = "C";}
if (gpa[x] < 2.0){
lgrd[x] = "D";}
if (gpa[x] < 1.3){
lgrd[x] = "F";}
if (gpa[x] < 0.1){
lgrd[x] = "NONE";}
}
System.out.println (" STUDENT REPORT");
System.out.println ("");
System.out.println ("STUDENT STUDENT GPA GRADE");
System.out.println (" NUMBER NAME");
for (x=0; x<gpa.length; x++)
System.out.println (" " + std1[x] + " " + name[x] + " " + gpa[x] +
" " +lgrd[x]);
}
}
なぜ....あなたはあなたがいないことを意味します! –
私はあなたが言うことを意味すると思うが、「yは増分するだけだ...」良いキャッチ。 +1 –
Argh - はい - ありがとう! :-) – Shaun