Помощь с массивами Java: сохранение в выходной файл - PullRequest
0 голосов
/ 13 июля 2011
public char[] calculateGrade(int [] scores, char [] grades){
    for (int r = 0; r < scores.length; r++){
        //System.out.println(scores[r] + " ");
        if (scores[r] > 90)
            grades[r] = 'A';
        else if (scores[r] > 80)
            grades[r] = 'B';
        else if (scores[r] > 70)
            grades[r] = 'C';
        else if (scores[r] > 60)
            grades[r] = 'D';
        else
            grades[r] = 'F';
    for (int i = 0; i < grades.length; i++)
        System.out.println(grades[i]);

    }
    return grades;

}

Выше приведена небольшая часть моей общей программы, которая берет результаты из файла и превращает их в буквенные оценки. Мне нужно поместить эти оценки букв в этот файл. Буквенная оценка должна соответствовать баллу. Есть 26 разных оценок по одной строке за раз. Я бы поместил весь мой код здесь, но он действительно длинный. Пожалуйста, помогите, ребята!

Ответы [ 2 ]

3 голосов
/ 13 июля 2011

Я бы рекомендовал, чтобы каждый метод делал одно и делал это хорошо. Не подсчитывайте оценки и распечатывайте их.

public void printGrades(PrintStream ps, char [] grades) {
    for (char grade : grades) {
       ps.println(grade);
    }
}

public char[] calculateGrade(int [] scores){

    char [] grades = new char[scores.length];

    for (int r = 0; r < scores.length; r++){
        if (scores[r] > 90)
            grades[r] = 'A';
        else if (scores[r] > 80)
            grades[r] = 'B';
        else if (scores[r] > 70)
            grades[r] = 'C';
        else if (scores[r] > 60)
            grades[r] = 'D';
        else
            grades[r] = 'F';
    }
    return grades;

}
1 голос
/ 13 июля 2011

Измените свой метод на следующий:

public void calculateGrade(int[] scores, char[] grades){
    for (int r = 0; r < scores.length; r++) {
        if (scores[r] > 90)
            grades[r] = 'A';
        else if (scores[r] > 80)
            grades[r] = 'B';
        else if (scores[r] > 70)
            grades[r] = 'C';
        else if (scores[r] > 60)
            grades[r] = 'D';
        else
            grades[r] = 'F';
    }
}

Нет необходимости возвращать grades, так как массивы передаются по ссылке в любом случае. Затем в своем методе вызова (main?) Вы должны написать grades в нужный файл.

Чтобы записать в файл, обратитесь: http://www.exampledepot.com/egs/java.io/WriteToFile.html

Так что-то вроде:

try {
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("filename")));

    for( char grade : grades )
        out.println(grade);

    out.close();
} catch (IOException e) { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...