Newbee vermasselt Prüfung, nun Fehlersuche step-by-step

morphi79

Erfahrenes Mitglied
Hallo Leute,

da ich meine Prüfung in JAVA voll in den Sand gesetzt hab, hoffe ich dass ihr mir etwas weiterhelfen könnt. Ich habe mir nochmals die Aufgaben geholt. Vielleicht könnt Ihr mir dabei helfen, damit ich sehen kann, was ich falsch gemacht habe.

Gleich mal zur ersten Aufgabe, gegeben ist folgendes:
Code:
public class Hausarbeit1 {

public static void main(String[] args) {

short zahl1 = 1234;

short zahl2 = 5678;

zahl1++;

zahl2++;

int ergebnis = (zahl1 + zahl2) << 4;

short kurz = (short)ergebnis;

System.out.println(zahl1);

System.out.println(zahl2);

System.out.println(ergebnis);

System.out.println(kurz);

}

}

Nun meine Aufgabe:
Nehmen Sie nun einige Erweiterungen an dieser Klasse vor. Definieren Sie eine Methode toShort(), die ein Argument vom Typ int bekommt, dessen Wert in einen Wert vom Typ short umwandelt und zurückgibt. Definieren Sie ebenso eine Methode toFloat(), die einen Wert vom Typ double in einen Wert vom Typ float umwandelt.
Ersetzen Sie nun den expliziten Cast in der Methode main() durch die Verwendung von toShort(). Dividieren Sie in main() ferner den Wert von Ergebnis durch 9.876 und speichern Sie das Resultat in einer Variable doppelt vom Typ double. Weisen Sie diesen Wert anschließend unter Verwendung von toFloat() einer Variable einfach vom Typ float zu. Ergänzen Sie die Ausgabeanweisungen um die Ausgabe der Werte der beiden neuen Variablen.

Die Methode kann ich doch einfach so einsetzen, oder nicht?
int toShort = short(ergebnis)
 
Hi,
also für mich klingt das eher nach sowas in der Art:

Auszug Main:
Code:
short kurz = to_short(ergebnis);

Und vorher definierst du noch die Methode to_short:

Code:
private short to_short (int x){
 return short(x);
}

Das gleiche mit leichten Abwandlungen eben für to_Float. Naja die Division war denke ich mal nicht das Problem.
Hoffe mal hab das jetzt richtig verstanden ;).

Gruß
 
Wäre dass dann mal der Anfang soweit?

Code:
public class Hausarbeit1 {

public static void main(String[] args) {

short zahl1 = 1234;

short zahl2 = 5678;

zahl1++;

zahl2++;

int ergebnis = (zahl1 + zahl2) << 4;

short kurz = (short)ergebnis;

 

private short toShort (int x){

 return short(x);

}

short kurz = toShort(ergebnis);

 

private float toFloat (double y) {

 return float(y);

}

float kurz = toFloat(ergebnis);

 

System.out.println(zahl1);

System.out.println(zahl2);

System.out.println(ergebnis);

System.out.println(kurz);

}

}
 
Hi,
naja nicht ganz. Habt ihr Methoden nicht durchgenommen? Zumindest wirkt es auf mich so als wenn es für dich Neuland ist. Es müsste so aussehen:


Code:
public class Hausarbeit1 {

private short to_Short (int x){
 return short(x);
}

private float to_Float (double y) {
 return float(y);
}

public static void main(String[] args) {

short zahl1 = 1234;
short zahl2 = 5678;
zahl1++;
zahl2++;
int ergebnis = (zahl1 + zahl2) << 4;
short kurz = toShort(ergebnis);

double doppelt = ergebnis / 9.876;
float einfach = toFloat(doppelt);

System.out.println(zahl1);
System.out.println(zahl2);

System.out.println(ergebnis);
System.out.println(kurz);
System.out.println(doppelt);
System.out.println(einfach);
}

}

Das ist jetzt schon die ganze Aufgabe glaube ich. Wenn du Verständnisfragen hast stell sie einfach. Blind abschreiben würde dich ja nicht wirklich weiterbringen ;).

Gruß
 
naja, wir haben die nur kurz angeschnitten. in der prüfung sind 85% durchgefallen. Aber es bringt mir ja nichts, wenn ich es nicht verstehe. Das mit den Methoden hab ich jetzt die letzten 2 Tage durchgemacht. Es geht ja nur darum, dass ich die richtige Lösung mit meiner geschriebenen Aufgabe verlgeichen kann. Damit kann ich dann am besten sehen, wo meine Schwachpunkte liegen. Ich hoffe es zumindest. Ich glaub jetzt ich habs verstanden. So nun werde ich mal die nächste Aufgabe ansehen. Hoffe Ihr helft mir weiter, wenn ich das nicht verstehe.
 
Als nächstes hätte ich eine Frage. Ich soll eine eine Klasse Konto erstellen, die in
einfacher Weise ein Bankkonto beschreibt. Das habe ich auch gemacht mit zwei Klassen:
Hier die Klasse Konto
Code:
 public class Konto {
	// Instanzvariable
	private double kontostand;
 
	// Konstruktor
	public Konto(double stand_neu) {
kontostand = stand_neu;
	}
 
	// Kontostand abfragen
	public double getKontostand() {
return kontostand;
	}
 
	// Geldbetrag auf das Konto einzahlen
	public void einzahlen(double betrag) {
kontostand = kontostand + betrag;
	}
 
	// Geldbetrag vom Konto abheben
	public void abheben(double betrag) {
kontostand = kontostand - betrag;
	}
}
Hier die Klasse KontoTester
Code:
public class KontoTester {
	public static void main(String[] args) {
Konto einKonto;
 
// Konto anlegen
einKonto = new Konto(500.00);
System.out.println("Erster Kontostand: " + einKonto.getKontostand());
 
// Vom Konto abheben
einKonto.abheben(150.00);
System.out.println("Kontostand nach abheben von 150.00: "
	 + einKonto.getKontostand());
 
// Auf Konto einzahlen
einKonto.einzahlen(11.23);
System.out.println("Kontostand nach einzahlen von 11.23: "
	 + einKonto.getKontostand());
 
// Vom Konto abheben
einKonto.abheben(400.00);
System.out.println("Kontostand nach abheben von 400.00: "
	 + einKonto.getKontostand());
 
// Auf Konto einzahlen
einKonto.einzahlen(222.50);
System.out.println("Kontostand nach einzahlen von 222.50: "
	 + einKonto.getKontostand());
 
// Vom Konto abheben
einKonto.abheben(47.62);
System.out.println("Kontostand nach abheben von 47.62: "
	 + einKonto.getKontostand());
	}
}

Jetzt möchte ich folgendes hinzufügen:
- Ein Konto erhält als zusätzliche Eigenschaft eine Kontonummer, die als Wert
vom Typ long gespeichert wird. Die Kontonummer kann nur bei der Erzeugung
eines Konto-Objekts gesetzt werden. Danach soll sie nur noch abgefragt, aber
nicht mehr geändert werden können.
- Die Methode abheben() wird so geändert, dass nur noch Abhebungen möglich
sind, die durch Guthaben gedeckt sind. Die Methode soll einen Wahrheitswert
zurückgeben, der angibt, ob die Abhebung durchgeführt wurde. Wird versucht,
einen Betrag abzuheben, der größer als der Kontostand ist, so soll der
Kontostand unverändert bleiben und der Wert false zurückgegeben werden.
Anderenfalls soll die Abhebung ausgeführt und der Wert true zurückgegeben
werden.
- Die Klasse KontoTester will ich so abändern, das das erzeugte Konto die Kontonummer
12345678 erhalten soll. Am Ende der Methode main() soll die Kontonummer abgefragt
und ausgegeben werden. Bei jeder einzelnen Abhebung soll getestet werden, ob sie
erfolgreich war. Nur, wenn eine Abhebung ausgeführt werden konnte, soll der neue
Kontostand ausgegeben werden, anderenfalls soll jeweils die Meldung „Guthaben
nicht ausreichend.“ ausgegeben werden.
Die Eigenschaft Kontonummer ist ja einfach hinzugefügt. Nur wie kann ich die Kontonummer nur bei der Erzeugung eines Konto-Objekts gesetzt werden und nur noch abfragen, aber nicht mehr ändern?
 
Hi,
das du die Nummer nur bei Erzeugung erstellen kannst und dann nur noch Abfragen darfst, erreichst du dadurch das du den Wert nur im Konstruktor animmst um ihn da zu setzen. Über eine Methode schaffst du dann die Möglichkeit auf die Nummer zugreifen zu können, aber nur zum lesen. Eine setzende Methode lässt du einfach weg.

Gruß
 
Also muss ich hier
Code:
// Konstruktor
	public Konto(double stand_neu) {
kontostand = stand_neu;
	}

die Kontonummer einsetzen, oder?

Code:
 // Konstruktor
	public Konto(double stand_neu, int kontonummer) {
kontostand = stand_neu;
kontonummer = kontonummer;
 }

und die Methode:
Code:
  // Kontonummer auslesen
	public void kontonummer(int kontonummer) {
kontonummer = kontonummer;	}
richtig?
 
Aehm, du willst doch die kontonummer auslesen oder?
Sprich sowas hier machen:


public int getKontoNummer() {
return this.kontonummer;
}

this ist nicht zwingend notwendig.

Habs mir nur irgendwie angewöhnt, da wir ja auch OO-orientiert denken ;)


Gruss,

Torsten
 
du musst zuerst eine entsprechende Variabel deklarieren. Dann den Konstruktor, wie du ja schon korrekt geschrieben hast...
Code:
private int kontonr;
 // Konstruktor
public Konto(double stand_neu, int kontonummer) {
  kontostand = stand_neu;
  kontonr = kontonummer;
}

Und die Methode müsste genau anders rum sein. So wie du sie beschrieben hast würdest du ja die Nummer ändern! Müsste also so aussehen:

Code:
 // Kontonummer auslesen
public int getKontonummer() {
  return kontonr;	
}

Gruß

[EDIT] Siehe teilweise den schnelleren Vorposter ;) [/EDIT]
 

Neue Beiträge

Zurück