Klausurergebnisse einer Lehrveranstaltung

Gerlon

Aktives Mitglied
hi,

hab erst vor kurzem mit Java angefangen, daher noch so einige Probleme!
Wir sollen: Die Klausurergebnisse einer Lehrveranstaltung mit einem Java-Programm ausgewerten.
Für jeden Teilnehmer werden die folgenden Daten erfasst:
Name, Vorname, Matrikel, Vorleistung (binär) und die Klausurnote (1.0, 1.3, …, 4.0, 5)
Das Programm soll alle Teilnehmer ermitteln, die den Modul erfolgreich bestanden haben. Der Modul
gilt als bestanden, wenn die Vorleistung erbracht und mindestens die Klausurnote 4 erreicht wurde.
Überlegen Sie sich eine geeignete Datenstruktur, um die Daten der Teilnehmer zu erfassen, und
deklarieren initialisieren Sie eine Variable von diesem Typ für mindestens 5 Teilnehmer zum Testen
ihres Programms.



so hab auch das Programm schon so weit das es läuft, also wird kompiliert, nur die Ausgabe funktioniert nicht richtig da stürzt es dann immer ab nach dem 2 Studentenwerte gespeichert wurden, und vielleicht gibt es ja auch noch so Dinge die ich besser machen kann.
Wäre schön wenn mir da jemand helfen kann ;)

Java:
import java.util.Scanner;


class StudentT {
  String name,vorname;
  int matrikel;     // reicht int? 0 am anfang?
  boolean vorleistung;
  double klausurnote;
} // StudentT


public class Bl4auf3 {
  public static void main(String[] argv) {
  
    Scanner input = new Scanner(System.in);
    int i = 0;

    char yesNo = 'y';
     StudentT array[];
   do {



    array = new StudentT[i+1];   // reserviert speicher für array

      // Eingabe
     array[i] = new StudentT ();
     System.out.print(" Name: ");       array[i].name = input.next();
     System.out.print(" Vorname: ");    array[i].vorname = input.next();
     System.out.print(" Matrikel: ");   array[i].matrikel = input.nextInt();
     System.out.print(" Vorleistung erbracht? [y / n] ");
  
   if (input.next().charAt(0) == 'y') {
      array[i].vorleistung = true;
      } else {                         // besser switch case default? falsche eingabe vermeiden
      array[i].vorleistung = false;
      } // if else
    System.out.print(" Klausurnote: "); array[i].klausurnote = input.nextDouble();        // eingabe zw 1 und 6, normal das Eingabe von Zahlen mit Punkt zb: 1.2 als Note nicht funktioniert ?
  
    System.out.print(" Weiter? [ y / n] ");     // evtl ne yesNo funktion für y or Y / n N und auf andere eingaben nochmal fragt
    yesNo = input.next().charAt(0);
    System.out.println();
    i = i +1;
   }while (yesNo != 'n');
   
    // Ausgabe
   for (int k = 0;k < array.length;k++) {
  // int k = 0;
    // while (k < array.length) {

            System.out.println(array.length);
    if (array[k].vorleistung == true && array[k].klausurnote <= 4.0) {
      System.out.println( array[k].vorname + " ,"+ array[k].name + " hat bestanden!");
    // k++;
    }

   }



  } // main




} // class Bl4auf3
 

Jo.Mo.

Aktives Mitglied
...sorry, ich habe extra deswegen nachgefragt. O-Ton Tutor (Claus) mit beistehendem Übungsleiter "Die Daten sollen vorgegeben sein... es reichen 5 Personen". Um den Array soll eine Schleife laufen, die eben die Klausurnoten prüft und den gewünschten Output auf dem Bildschirm ausgibt.

Weiterhin hat die Datenstruktur auch nichts damit zu tun, ob man diese händisch ausfüllen muss oder da beispielhaft etwas eingetragen wird. Was du daran als sinnfrei erachtest, erschliesst sich mir nicht...
 

Jo.Mo.

Aktives Mitglied
PS: bei mir läuft das programm durch, aber selbst für 5 Personen ist die händische Eingabe schon recht aufwendig, ausserdem gibts danach bei mir eine NullPointer Exception in Zeile 61 (letzte if-Bedingung...)
 

Gerlon

Aktives Mitglied
das war ja auch mein problem
sonst hätte ich es mit einer eingabe ja auch erfüllt, nur das er das halt dann nicht mehr ausgibt, mehr wollte ich ja eigentlich nicht wissen, nur ob jemand da eine idee hat woran es liegen könnte ;)
 

Oben