2016-05-05 8 views
-3

Im Moment mein Professor möchte ein Programm wie unten tun, habe ich Schwierigkeiten, das zu erreichen, ich suche Hilfe, um mir durch zu helfen. Hier ist die Anleitung und was ich bisher habe. Cristisim und Beratung akzeptiert!Java Programm zu

1) Die höchste Punktzahl und die Studentennamen

2) Die niedrigste Punktzahl und die Studentennamen

3) Durchschnitts-Punktzahl der Klasse

4) Zeigen Sie die Schülernamen und ihre Ergebnisse in absteigender Reihenfolge ihrer Punktzahlen mit Noten: Wenn ihre Punktzahl über dem Durchschnitt liegt, markieren Sie mit einem '+' Zeichen; Wenn ihre Punktzahl dem Durchschnitt entspricht, markieren Sie mit einem '='; Andernfalls markieren Sie mit a'- '.

Beispiel Bild von dem, was ich zu tun habe: https://i.gyazo.com/403819a89bae613452dd8278b0612d81.png

Meine Probleme sind, ich weiß nicht, wie die Arrays zu sortieren, die höchste Punktzahl zu bekommen und es mit dem entsprechenden Namen auszudrucken, die mit ihm geht . Ich weiß auch nicht, wie man die Zahlen wie 1 setzt. Name, 2. Name, weil es zuerst mit 0 beginnt.

Meine Arbeit:

 public static void main(String[] args) { 
     System.out.println("********** Students and Scores ************"); 
     Scanner input = new Scanner(System.in); 
     System.out.print("How many students in your class?: "); 
     int numStudents = input.nextInt(); 
     double[] scores = new double[numStudents]; 
     String[] students = new String[numStudents]; 
     for (int i = 0; i < numStudents; i++) { 
      System.out.print(i + ". Name: "); 
      students[i] = input.next(); 
      System.out.print("Score: "); 
      scores[i] = input.nextDouble(); 

     } 

     double sum = 0; 
     for(int i=0; i < scores.length ; i++) 
       sum = sum + scores[i]; 
     double average = sum/scores.length; 

     System.out.println("*************** Results *****************"); 
     System.out.println("Average: " + average); 
     System.out.println("******* End of Students and Scores *********"); 
} 
+0

versuchen Sie Klassen zu verwenden! –

+1

Lesen Sie hier (http://stackoverflow.com/questions/5245093/using-comparator-to-make-custom-sort). Ich würde sehr empfehlen, eine 'Student'-Klasse zu erstellen, die den' Namen' und die'Spitze' speichert, so dass Sie die Reihenfolge nicht in zwei verschiedenen Listen pflegen müssen. –

Antwort

1

gut Sie den guten Ansatz für diese Art von Problem gegeben ...
In Java nicht genommen gibt es Klassen, so können Sie sie Ihren Student-Klasse verwenden und definieren wie folgt vor:

public class Student { 
    //variables 
    private String name; 
    private double score; 

    //constructor 
    public Student(String name, double score) { 
     this.name = name; 
     this.score = score; 
    } 

    //getters and setters 
    public String getName() { 
     return this.name; 
    } 

    public double getScore() { 
     return this.score; 
    } 

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

    public void setScore(double score) { 
     this.score = score; 
    } 
} 

Sie Klassen erstellen, können Sie Ihre Operationen und arbeiten mit Studenten Klasse
oder Sie können so etwas tun zu handhaben:

public static void main(String[] args) { 
    List<Students> students = new ArrayList<Students>(); 
    students.add("Jhon", 10); 
    students.add("Mary", 5.5); 
    students.add("Ana", 3); 

    Iterator i = students.iterator(); 

    //iterate through your students list like tihs; 
    while(i.hasNext()) { 
     System.out.println("Student = "+ i.next()); 
    } 
    // do what ever you want with the list 
    // make your calculations and stuff, what your problem required 
}