Methoden Methode wird doppelt aufgerufen ...

steman

Mitglied
Hi, ich habe angefangen einen kleinen Umrechner zu basteln, so als Einstieg, und die Methode "berechnung()" in Zeile 26 von Umrechner.java wird immer doppelt aufgerufen ...

Hier mal das Programm:

Geldumrechnung.java
Java:
public class Geldumrechnung{

	float fBetrag = 0;
	float fWechselkurs = 10;
	boolean bRichtung = false; //false: Waehrung1 zu Waehrung2, true: umgekehrt
	float fUmgerechneterBetrag = 0;
	
	public Geldumrechnung(float f1, boolean b){
		fBetrag = f1;
		bRichtung = b;
		berechnung();
	}
	
	public Geldumrechnung(float f1, boolean b, float f2){
		fBetrag = f1;
		bRichtung = b;
		fWechselkurs = f2;
	}
	
	public float berechnung(){
		fUmgerechneterBetrag = fBetrag * fWechselkurs;
		System.out.println(fUmgerechneterBetrag);
		
		if(bRichtung=false)
			return fUmgerechneterBetrag;
		else{
			fUmgerechneterBetrag = 1/fUmgerechneterBetrag;
			return fUmgerechneterBetrag;
		}
	}
}

Umrechner.java
Java:
import java.util.Scanner;

public class Umrechner {

	public static void main(String[] args) {
		
		//Zahleneingabe
				float f = 0;
				for(;;){
					System.out.println("Bitte umzurechnenden Betrag eingeben:");
					String str = "";
					Scanner inp = new Scanner(System.in);
					str = inp.nextLine();
					
					try{
						f = Float.parseFloat(str);
						break;
					}
					catch(NumberFormatException e){
						System.out.println("Eingabe muss eine Zahl sein!");
					}
				}
		
		Geldumrechnung Umrechnung = new Geldumrechnung(f, true); //WIRD ZWEI MAL AUFGERUFEN
		
		System.out.println(Umrechnung.berechnung());
	}
}

Zudem wird die Bedingung "if(bRichtung=true)" in Geldumrechnung.java einfach falsch herum interpretiert ... false ist true und umgekehrt 😵

Wäre cool, wenn ihr mir da helfen könntet 😉


Danke euch!
 
Zudem wird die Bedingung "if(bRichtung=true)" in Geldumrechnung.java einfach falsch herum interpretiert
Weil das, was du da machst, eine Zuweisung ist. Da fehlt ein zweitens Gleichheitszeichen.
Java:
if(bRichtung == true) {...} // oder einfach: if (bRichtung) {...}
 
Im Konstruktor ruft du die Methode das erste mal auf - das zweite mal dann im System.out.

Vergleichoperator in java ist '=='. Ein einfaches '=' ist eine Zuweisung.
if(A=B) ist also immer true, weil die Zuweisung ja immer true zurückliefert.
Für Vergleiche auf boolean bietet sich der '!' Operator an, also:
if( bRichtung ) für einen check auf true, und if( ! bRichtung ) für eine Prüfung auf false.
 
Wahnsinn, das ging flott.

Ich danke euch 🙂 Und lache gleichzeitig über die Blödheit der Fehler .. bin echt schon zu lange raus aus der ganzen Programmiersache ^^
 
Weil das, was du da machst, eine Zuweisung ist. Da fehlt ein zweitens Gleichheitszeichen.

Booleans sollte man aber eh nicht mit
Code:
true
oder
Code:
false
vegleichen. Die sind von sich aus
Code:
true
oder
Code:
false
. Also einfach
Code:
if (bedingung)
statt
Code:
if (bedingung == true)
.

Genau wie HimBromBeere im Kommentar anregte.
 

Neue Themen


Zurück
Oben