Hallo liebe Community,
ich schreibe im Fach Informatik eine Facharbeit zum Thema "Grenzen von PCs in der theoretischen Informatik". Ich habe versucht das Collatz- Problem in BlueJ zu implementieren, habe das auch geschafft, jedoch steh ich nun vor dem Problem, dass wenn ich in der Oberfläche eine Zahl errechnen lasse, nur das letzte Ergebnis der Rechnung angezeigt wird. Ich bräuchte das Programm jedoch so, dass alle Ergebnisse untereinander aufgereiht sind.
Hier der Quellcode:
import sum.komponenten.*;
import sum.werkzeuge.*;
import sum.ereignis.*;
public class Collatz extends EBAnwendung
{
// Objekte
private Etikett hatEtikettEingabe;
private Knopf hatKnopfBerechnen;
private Zeichenbereich hatZeichenbereich1;
private Textfeld hatTextfeld1;
private Etikett hatEtikettErgebnisse;
// Attribute
/**
* Konstruktor
*/
public Collatz()
{
//Initialisierung der Oberklasse
super(1075, 660);
hatEtikettEingabe = new Etikett(133, 147, 100, 25, "Eingabe:");
// Ausrichtung
hatEtikettEingabe.setzeAusrichtung(Ausrichtung.MITTE);
hatKnopfBerechnen = new Knopf(244, 183, 100, 25, "Berechnen");
hatKnopfBerechnen.setzeBearbeiterGeklickt("hatKnopfBerechnenGeklickt");
hatZeichenbereich1 = new Zeichenbereich(366, 148, 100, 100, "");
hatTextfeld1 = new Textfeld(246, 147, 100, 25, "");
// Ausrichtung
hatTextfeld1.setzeAusrichtung(Ausrichtung.LINKS);
hatEtikettErgebnisse = new Etikett(367, 115, 100, 25, "Ergebnisse");
// Ausrichtung
hatEtikettErgebnisse.setzeAusrichtung(Ausrichtung.MITTE);
}
/**
* Vorher: Ereignis GeklicktvonhatKnopfBerechnen fand statt.
* Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
*/
public void hatKnopfBerechnenGeklickt()
{
// Schreiben Sie hier den Text ihres Dienstes
hatZeichenbereich1.setzeInhalt(this.collatz(hatTextfeld1.inhaltAlsGanzeZahl()));
}
public int collatz(int pZahl)
{
while(pZahl>1) {
if(pZahl%2 == 0) {
pZahl = pZahl/2;
}
else{
pZahl = 3*pZahl+1;
}
hatZeichenbereich1.setzeInhalt(pZahl);
}
return pZahl;
}
}
Wäre echt dankbar wenn mir jemand helfen könnte!
MfG