다른 배열의 동일한 인덱스를 사용하여 몇 가지 기본 연산을 수행하기 위해 두 배열을 비교하려고합니다. 나는 정확한 답을 얻지 못하고 있는데 배열이 정확하게 비교되지 않기 때문이라고 생각한다. 어레이 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이것은 숙제이며이 문제를 파악하는 데 많은 시간을 할애 할 수 없었습니다. 이 숙제의 최종 결과는 이름과 학년 정보가있는 두 개의 학생 파일에서 평점을 계산하는 것입니다. 배열에 파일을 추가 한 다음 배열을 특정 형식 (int, double, string)의 고유 한 배열로 분할했지만 GPA를 계산하는 동안 인덱스 정확성을 유지하기 위해 모든 중복을 유지했습니다. 즉, 배열 std2 [5]와 hrs [5]는 인덱스 [5]에서 하나의 결합 된 배열이었을 때와 동일한 데이터를 유지했습니다.
도움을 주시면 감사하겠습니다.
감사
*** 편집 :
내 전체 코드를 추가하는거야 내가 여기에서 당겨있어 두 파일 :
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 –
아아 - 예 - 감사합니다! :-) – Shaun