-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

您使用的是面向对象的语言,因此无需使用并行数组。您可以在dreamincode.net上查看 macosxnerd101 编写的这个很棒的教程:从并行数组移开

您应该创建一个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 回答