-1

私はこれが初めてです。クラスの特定の人の成績をユーザーに尋ねるメソッドの作成に問題があります。これは私がこれまでに持っているものです:

String[] names = {"Bashful", "Doc", "Dopey", "Grumpy", "Happy", "Sleepy", "Sneezy"};
double[] grades = new double [7];   

public static double[] getScores(double[] grades, String[] names)
{
    Scanner kb = new Scanner(System.in);
    for (int i = 0; i < names.length; i++)
    {
        System.out.println("Enter grades for : " +names[i]);
        for (int i = 0; i < grades.length; i++)
        {
            grades[i] = kb.nextDouble();
        }
    return grades;
}

誰かが私を正しい方向に向けてくれませんか、ありがとう。

4

1 に答える 1

1

オブジェクト指向言語を使用しているため、並列配列を使用する必要はありません。macosxnerd101によるこのすばらしいチュートリアルは、dreamincode.net: Moving Away From Parallel Arraysで確認できます。

Studentオブジェクトを作成する必要があります。

public class Student {
  private String name;
  private double grade;
}

学生をループして成績を割り当てます。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Grades {
    public final String[] names = { "Bashful", "Doc", "Dopey", "Grumpy",
            "Happy", "Sleepy", "Sneezy" };

    private List<Student> students;

    public Grades() {
        students = new ArrayList<Student>();
        for (String name : names)
            students.add(new Student(name));
        int i = 0;
        Scanner scan = new Scanner(System.in);
        while (i < names.length) {
            Student currStudent = students.get(i);
            System.out.printf("Enter grade for %s: ", currStudent.getName());
            double inputGrade = scan.nextDouble();
            currStudent.setGrade(inputGrade);
            i++;
        }
        scan.close();
        System.out.println(students);
    }

    private class Student {
        private String name;
        private double grade;

        public Student(String name) {
            setName(name);
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getGrade() {
            return String.format("%.2f%%", (grade * 100));
        }

        public void setGrade(double grade) {
            this.grade = grade;
        }

        public String toString() {
            return String.format("Name: %s, Grade: %s", getName(), getGrade());
        }
    }

    public static void main(String[] args) {
        new Grades();
    }
}
于 2013-03-16T00:57:22.043 に答える