• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

[Java][BlueJ]

BerndderHeld

Spätblühender Taffetapfe
Registriert
03.09.06
Beiträge
2.802
So, ich lerne jetzt (zum wiederholten male) Java mit BlueJ.

Ich habe meinen Übungszettel so gut wie fertig. War auch alles nicht so das Problem nur eine kleine Sache funktioniert noch nicht. Ich habe einen Ticketautomaten. Der soll eine Methode bekommen wo er eine Statistik ausgibt, wievielTickets er von jeder Sorte herausgegeben hat (Normal, Halber Preis, ermaessigt um xx%). In der Ausgabe soll der Höchste Wert oben in der Liste stehen.

Mit den Zahlenwerten klappt das auch wunderbar. Nur kann ich die Beschriftungen dazu nicht wirklich mitschicken.

public class Ticketautomat
{
[...]
private String top1name;
private String top2name;
private String top3name;
[...]
/**
* Aufgabe e) Druck einer Ticketstatistik
*/
public void druckeStatistik()
{
int top1;
int top2;
int top3;

if (ticketsnormal>=ticketsermaessigt)
{
top2=ticketsnormal;
top3=ticketsermaessigt;
}
else
{
top2=ticketsermaessigt;
top2name="Tickets ermaessigter Preis";
top3=ticketsnormal;
top3name="Tickets normaler Preis";
}

if (ticketshalb>=top2)
{
top1=ticketshalb;
top1name="Tickets halber Preis";
}
else if (ticketshalb>=top3)
{
top1=top2;
top1name=top2name;
top2=ticketshalb;
top2name="Tickets halber Preis";
}
else
{
top1=top2;
top1name=top2name;
top2=top3;
top2name=top3name;
top3=ticketshalb;
top3name="Tickets halber Preis";
}

System.out.println("##################" );
System.out.println("# Die Bluej-Linie" );
System.out.println("# Anzahl "+top1name +": "+ top1);
System.out.println("# Anzahl "+ top2name +": "+ top2);
System.out.println("# Anzahl "+ top3name +": "+ top3);
System.out.println("##################" );
System.out.println("" );
}
Die Ausgabe sieht aber leider so aus:
##################
# Die Bluej-Linie
# Anzahl null: 3
# Anzahl Tickets halber Preis: 2
# Anzahl null: 1
##################
Also klappt das irgendwie mit der übergabe von den Strings von einer Variable zur anderen nicht. Aber warum?

Ich habe mit absicht kein Array genommen weil ich das für 3 Werte ein bischen überdimensioniert fand und ich glaube das der Dozent jetzt noch nicht sehen will.

So, any ideas? Irgendwer?
 

Dadelu

Reinette Coulon
Registriert
06.07.05
Beiträge
939
Hi..

Also hier noch ein paar Tips:

  • Gewöhne dich daran, dass du bessere Namen wählst für deine Variabeln! Wenn du am Anfang stehst, ist es natürlich in Ordnung, aber wenn du mir jetzt sagst, dass du auch schon mit anderen Programmier Sprachen gearbeitet hast, bin ich entäuscht ;) (Hatte fürchterlich Mühe die Namen irgendwie zu zuweisen..)
  • Mit dem Code, welchen du gepostet hast, machen die IF Abfragen überhaupt keinen Sinn und so wird automatisch immer der Else Fall ausgeführt..
Aber nun zur Lösung deines Problems.
Der Fehler liegt hier:
Code:
top1name=top2name;
  top2=ticketshalb;
  top2name="Tickets halber Preis";
  ..............

Zwar weist du dem top1name den Namen des top2namen zu, aber diesen füllst du erst später an! Zum Zeitpunkt der Zuweisung beinhaltet den String noch keinen Wert -> Null

So würde es richtig gehen für den ersten Namen:

Code:
  top2=ticketshalb;
  top2name="Tickets halber Preis";
  top1name = top2name;
  ..............

probier es mal aus..

Gruss, Dadelu
 

BerndderHeld

Spätblühender Taffetapfe
Registriert
03.09.06
Beiträge
2.802
Ich habs jetzt selbst herausgefunden. Ich hatte zwei Zeilen vergessen.

die if-Abfragen funktionieren schon so wie sie sollen. Sie sollen die Werte der Größe nach sortieren.

Trotzdem Danke das du dir die Mühe gemacht hast.