2016-05-21 2 views
3

Ich versuche, die Code-Eingänge, die ich habe, und drehen sie in eine int-Array-Liste, so dass ich sie verwenden kann Berechnen Sie die durchschnittliche Punktzahl, aber ich bin mir nicht sicher, wie das geht. Auch wenn es um die Noten geht, können die Eingaben zwischen 1 und 5 liegen, so dass ein Schüler 3 und der nächste 5 und so weiter haben könnte. Dies ist der Code, den ich bisher habe.Ich muss eine durch Komma getrennte Zeichenfolge in eine Array-Liste und dann den Durchschnitt dieser Punkte berechnen

Meine Hauptfrage ist, wie nehme ich meine Listeneingaben und mache sie in separate Array-Ganzzahlen?

//data declarations and initalizations 
    final int MAX_STUDENTS = 12; 
    final int MAX_SCORE = 5; 

    //data declarations 
    double avg; //average total for all students 
    int numStudents; //number of students 1-12 
    double totalAvgStu = 0.0; // 
    int num; 
    String stuScores = " "; //student score 1-5 

    //array declarations and inistiations 
    int [] score = new int[MAX_SCORE]; // score from input range between 1-5 
    double [] avgScores = new double[MAX_STUDENTS]; //avg total of score for one student 
    String [] testScores = new String[MAX_STUDENTS]; 
    String [] array1 = new String[MAX_SCORE]; 

    //user inputs for number of students 
    numStudents = UtilsKS.readInt("Enter number of students: ", false);         

    //while loop for correct input of students 
    while (numStudents <= 0 || numStudents > 12) { 
     System.out.print("ERROR: must be 1-12, "); 

     numStudents = UtilsKS.readInt("Enter number of students: ", false); 
    } 

    // user input for student score using a for loop 
    for (int i = 0; i < numStudents; i++) { 
     stuScores = UtilsKS.readString("Enter comma-separated test score for student " + (i+1) + ": ", false); 

    } 

    //for loop for arrays 
    for (int i=0; i<avgScores.length; i++) { 
     totalAvgStu += avgScores[i]; 

    } 

    //outputs 
    String header = "average score1 score2 score3 score4 score5"; 
    System.out.println("\n" + header);                     
    System.out.println("\nAvg for all students = " + totalAvgStu/avgScores.length); 

    //initializing testscore to = what scores are inputed per student 
    for (int t=0; t<numStudents; t++) { 
     testScores[t] = stuScores; 
    }  
+3

Sie haben Anforderungen und Code geschrieben, aber keine * spezifische * Frage gestellt. Wir werden natürlich nicht den Code für Sie machen, aber wir können Fragen beantworten. Also reparieren Sie das bitte, damit wir wissen, wie wir Ihnen helfen können. –

+1

Hier läuft eine Menge Code ab. Was genau ist das Problem? – Mureinik

+0

Sorry, dass ich mein Hauptproblem hinzugefügt habe, bin ich neu in der Verwendung dieses. Ich weiß, dass Sie .split() und integer.parseInt() irgendwie verwenden müssen, aber ich verstehe nicht wie? – Kathryn

Antwort

3
Arrays.stream("1,2,3,4,5".split(",")).mapToInt(Integer::parseInt).average(); 

schlage ich meine kompakte Lösung betrachten. Das gibt OptionalDouble zurück. getAsDouble() wird Ihnen das Ergebnis zurückgeben, wenn Sie es zunächst durch isPresent() überprüfen, um NoSuchElementException zu vermeiden.


EDIT:

Ich mag keine massiven Teile des Codes mit langen Variablennamen schreiben, aber ich habe die Ausnahme für Sie zu einem besseren Verständnis.

String commaSeparatedString = "1,2,3,4,5"; 
String[] numbers = commaSeparatedString.split(","); 
Stream<String> stringStream = Arrays.stream(numbers); 
IntStream intStream = stringStream.mapToInt(value -> Integer.parseInt(value)); 
OptionalDouble average = intStream.average(); 
System.out.println(average.isPresent() ? 
        "average = " + average.getAsDouble() : 
        "stream is empty!") 
+3

Ah ja, der Java 8 Weg, es zu tun. 1+ –

+0

Ich bin noch ein wenig zu Codieren, also bin ich ein wenig verwirrt – Kathryn

+0

Arrays wird von java.util importiert. * :) im Fall 'nur um es zu erwähnen. –

0

Können Sie eine Beispieleingabe und -ausgabe bereitstellen?
Auch ein einfacher (hacky) Weg wäre 2 Variablen Temp und Summe zu initialisieren. Parsen Sie die Zeichenfolge mit dem Komma. Speichern Sie den Wert in der Temp und addieren Sie zur Summe. Speichern Sie einen Zähler, wie oft Sie diese Schritte ausgeführt haben. Teilen Sie die Summe nach Zähler auf, um den Durchschnitt zu erhalten.

Verwandte Themen