2013-03-16 52 views
-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; 
} 

有人請指點我在正確的方向,謝謝。

回答

1

您正在使用面向對象的語言,因此不需要使用並行陣列。你可以在dreamincode.net查看macosxnerd101這個令人敬畏的教程: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(); 
    } 
} 
相關問題