두 개의 다른 프로그램이 있습니다. 하나는 "addGrade"메소드를 포함하고 있는데,이 클래스는 새로운 등급을 2D 배열 (gradeTable)에 추가하도록 설계되었습니다. 2D 배열의 한 배열은 각 등급이 속해야하는 범주이고 두 번째 요소는 각 범주의 등급입니다. 이 프로그램은 다음과 같습니다.파일에서 읽어 들여서 2D 배열에 추가하기
public class GradeBook {
private String name;
private char[] categoryCodes;
private String[] categories;
private double[] categoryWeights;
private double[][] gradeTable;
public GradeBook(String nameIn, char[] categoryCodesIn,
String[] categoriesIn, double[] categoryWeightsIn) {
name = nameIn;
categoryCodes = categoryCodesIn;
categories = categoriesIn;
categoryWeights = categoryWeightsIn;
gradeTable = new double[5][0];
}
public boolean addGrade(String newGradeIn) {
char row = newGradeIn.charAt(0);
int grade = Integer.parseInt(newGradeIn.substring(1));
double[] oldArr = gradeTable[row];
double[] newArr = Arrays.copyOf(oldArr, oldArr.length + 1);
newArr[newArr.length - 1] = grade;
gradeTable[row] = newArr;
return row != 0;
}
두 번째 프로그램은 파일에서 명령 인수로 읽습니다. 굵게 표시된 텍스트는 읽는 성적을 나타냅니다. 문자는 각 학년이 속해야하는 카테고리를 나타내며 그 수는 실제 성적입니다. 이 파일은 내가 파일의 각 학년까지 루프를 시도하고 그것은 2 차원 배열에 추가 할 수 있도록 그 위에 addGrade 메소드를 호출하고있어, 두 번째 프로그램에서
Student1
5
a Activities 0.05
q Quizzes 0.10
p Projects 0.25
e Exams 0.30
f Final 0.30
**a100 a95 a100 a100 a100
q90 q80 q100 q80 q80 r90
p100 p95 p100 p85 p100
e77.5 e88
f92**
입니다. 각 개별 학년마다이 방법을 호출하는 방법을 잘 모르겠습니다. 또한 addGrade 메서드가 옳지 않다는 것을 확신합니다. 어떤 도움을 주시면 감사하겠습니다. 이것은 두 번째 프로그램입니다 :
public class GradeBookApp {
String fileName = "";
String name = "";
char[] categoryCodes = new char[5];
String[] categories = new String[5];
double[] categoryWeights = new double[5];
double[][] gradeTable;
if (args.length > 0) {
for (int i = 0; i < args.length; i++) {
System.out.println("Reading file \"" + args[i] + "\"."
+ "\n\tCreating GradeBook object."
+ "\n\tAdding grades to GradeBook object."
+ "\nProcessing of file complete.");
fileName = args[i];
Scanner scanFile = new Scanner(new File(fileName));
name = scanFile.nextLine();
int catCodes = Integer.parseInt(scanFile.nextLine());
for (i = 0; i < catCodes; i++) {
String[] all = scanFile.nextLine().split(" ");
if(all.length == 3 && all[0].length() == 1 && all[2].matches("(\\d+\\.\\d+)")){
categoryCodes[i] = all[0].charAt(0);
categories[i] = all[1];
categoryWeights[i] = Double.parseDouble(all[2]);
}
}
GradeBook myGB = new GradeBook (name, categoryCodes,
categories, categoryWeights);
배열을 사용해야합니다. 나는 파일을 읽고 다른 변수와 배열에 요소를 추가하는 두 번째 프로그램에 추가했다. 파일의 처음 몇 줄을 끝내었지만, 각 개별 학년의 다른 파일에서 addGrade 메서드를 호출하는 데 문제가 있습니다. – me123
@ me123 왜 배열을 사용해야합니까? (이것은 신발의 발 뒤꿈치로 손톱을 부딪 치고 망치를 제공하는 사람을 찾은 것, 그리고 그가 매우 감사한다고 회신하지만 그는 신발을 사용하고 있습니다.) –
lol, 예 알고있다. 나는 항상 ArrayList를 사용했고 배열에 대해 더 많이 알고 싶습니다. 바보 같지만 배열을 사용하는 방법을 실제로 알고 있다는 것을 알고 싶습니다. – me123