Ergebnisse in einer Struktur speichern

Status
Nicht offen für weitere Antworten.

Vril

Bekanntes Mitglied
Hallo, habe vor folgende "Anfänger-Aufgabe" zu lösen:

Eine Klasse mit 30 Schülern tritt zu den Bundesjugendspielen in folgenden Disziplinen an:
50m Lauf, Weitsprung und Schlagballweitwurf.
Schreiben Sie ein Programm, das für jeden Schüler seine Ergebnisse in einer Struktur speichert. Die Ergebnisse sollen in Punkte umgerechnet werden und sowohl die Einzelergebnisse als auch die Gesamtergebnisse jedes Schülers ausgegeben werden. Je nach Geschlecht gelte folgende Punktestaffel......

Also ich hätte mir das ganze jetzt als Abfrage vorgestellt, die die jeweiligen Werte einliest und dementsprechend ablegt:
System.out.println("Geben Sie einen Namen ein: ");
String name = ReadSimple.readString();
usw.

Anschließend dann in einer If-Verzweigung auswertet.



Jetzt wollte ich fragen ob ich damit der Aufgabenstellung "..das für jeden Schüler seine Ergebnisse in einer Struktur speichert..." gerecht werde. Oder ob es dafür eine sinnvollere Vorgehensweise gibt?
 
Hallo,

na das deutet darauf hin, dass du ein extra Object wie Schueler schreiben sollst. Sinnvoll wäre es dann, dass ein Schueler einen Namen, und je die drei Felder für die Punkte hat. Dann musst du nur noch dafür sorgen, dass du mehrere Schueler haben und je nach Name abfragen kannst, zum Beispiel in ArrayList of Schueler.

Beispiel
Code:
public  class Schueler {
  private String name = "";
  private int schlagball = 0;
  private int weitsprung = 0;
  private int laufen = 0; 
}

Dann muss dein Objekt nur noch Setter (Umrechnung in Punkte nicht vergessen), Getter und Konstruktor bekommen.

Ciao, micbur
 
Also ich versuche das ganze jetzt erstmal nur immer für einen Schüler durchzuführen:
Code:
import java.util.*;
import java.io.*;
import IOTools.*;

class Teilnehmer
{
	String name; String vorname; Character geschlecht;
	Integer weits; Integer lauf; Integer schlag; Integer weitsMer;
	
	public void abfrage() {
		System.out.print ("Geben Sie bitte den Namen des Teilnehmers ein   : ");
		String name = ReadSimple.readString();
		System.out.print ("Geben Sie bitte den Vornamen des Teilnehmers ein: ");
		String vorname = ReadSimple.readString();
		System.out.print ("Ist der Teilnehmer maennlich oder weiblich (m/w)? ");
		Character geschlaecht = ReadSimple.readCharacter();
		this.name = name;
		this.vorname = vorname;
		this.geschlecht = geschlecht;
	}
	public void auswertung() {
		System.out.println ("");
		System.out.println ("Punkteerfassung fuer "+name +" "+ vorname +" : ");
		System.out.println ("********************************************");
		System.out.println (" ");
		System.out.print ("Geben Sie das Ergebnis des Weitsprungs ein. Meter     : ");
		Integer weits = ReadSimple.readInteger();
		System.out.print ("Geben Sie das Ergebnis des 50m Laufs ein. Meter       : ");
		Integer lauf = ReadSimple.readInteger();
		System.out.print ("Geben sie das Ergebnis des Schlagballwurfes ein. Meter: ");
		Integer schlag = ReadSimple.readInteger();
		this.weits = weits; this.lauf = lauf; this.schlag = schlag;
	
		if (geschlecht == 'm' || geschlecht == 'M'){
			if (weits == '4'){
				Integer weitsMer = 50;
				}
				else if (weits > 4) {
					Integer weitsMer = weits * 100 - 400 + 50;
					//this.weitsMer = weitsMer;
					
				}
			
			this.weitsMer = weitsMer;
			}
		}
		public void ausgabe(){
			
		System.out.println ("Das Ergebnis des Weitsprungs. Punkte: "+weitsMer);
		}
		
	}







public class Bundesjugendspiele {
	public static void main (String[] args) {
		Teilnehmer tln = new Teilnehmer();
		tln.abfrage();
		tln.auswertung();
		tln.ausgabe();
	}
}
Alles es läuft eigentlich ganz gut. Nur bekomme ich bei der letzten Ausgabe (Ergebnis des Weitsprungs) keine 50 Punkte (bei der eingabe von 4) ausgegeben sondern die Fehlermeldung: mit einer NullpointerException
Hat jemand eine Idee an was das liegen könnte?
 
Das könnte an diesem Codestück liegen:
Code:
Character geschlaecht = 'm';  // Linie 17
this.geschlecht = geschlecht; // Linie 20
Hier hat sich ein Schreibfehler eingeschlichen...


Ach, und was noch ganz wichtig ist: schreib nicht "Integer" sondern "int". Du hast hier nur Objekte verwendet, die Zahlen (und auch Buchstaben) werden aber als sog. primitive Datentypen behandelt. Diese Umwandlung primitiver Datentyp -> Object (und zurück) kostet vieeel Zeit...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben