Wo ist mein Fehler ? o:

MCmarekAF

Mitglied
Hallo Leute , ich habe ein Problem :bahnhof: : ich habe ein Programm geschrieben , aber habe Schwierigkeiten , da es zwar funktioniert , aber nicht ganz so wie ich das möchte .
Dieses Programm sollte eigentlich ein Taschenrechner sein , mit dem man die vier Grundrechenarten ausführen können sollte ... ich habe eifach mal ein paar kommentare in den Quellcode geschrieben , damit ihr seht was genau nicht funktioniert .
Ich hoffe das ihr mir weiterhelfen könnt und freue mich auf eure antworten :)


Java:
import java.util.Scanner;


public class Klasse{
  
public static void main(String args[]){
	  Scanner s = new Scanner(System.in);
	  
	  double x ;
	  
	  System.out.println("Welche Art der Rechnung möchten Sie durchführen ?  ");
System.out.println(" ");
	  System.out.println("Tippen Sie für Addition die : 1,");
	  System.out.println("für Subtraktion die : 2 ,");
	  System.out.println("für Multiplikation  die : 3 ,");
	  System.out.println("Und für Division  die : 4 ein. ");
	  
	  
	   x =s.nextInt();                                 // das wird zwar richtig ausgeführt , aber wenn die erste Zahl , die ich eingebe , kleiner oder gleich 4 ist , dann springt er in eine der anderen methoden :/
	  Addition(x);
	  Subtraktion(x);
	  Multiplikation(x);                               // das wird immer zweimal aufgeführt ..
	  Division(x);}                                    // wenn ich die Division wähle , führt er es zwar aus , aber 3 mal o: ich hab aber keine ahnung wieso ..
	  
	
	
	private static void Addition(double a){
	  if (a==1){
		  Scanner s = new Scanner(System.in);
		  System.out.println("Geben sie die erste Zahl ein :");
		  a = s.nextInt();
		  System.out.println("Geben Sie die zweite Zahl ein :");
		 double b = s.nextInt();
		  double c = a +b ;
		  System.out.println("Die Summe aus " + a + " und " + b + " ist : " + c);
		  Subtraktion(a);
		  
	  }
	  }
	  
	private static void Subtraktion(double b){
  if(b==2){
	
	Scanner sn = new Scanner(System.in);
	  
		  System.out.println("Geben sie die erste Zahl ein :");
		 double d = sn.nextInt();
		  System.out.println("Geben Sie die zweite Zahl ein :");
		 double e = sn.nextInt();
		  double f = d - e ;
		  System.out.println("Die Differenz  aus " + d + " und " + e + " ist : " + f);
  }
        Multiplikation(b);
		  
	  }
	 
	private static void Multiplikation(double c){ // 50
  if (c==3){
	
	Scanner s = new Scanner(System.in);
	  System.out.println("Geben sie die erste Zahl ein :"); 
	  double g = s.nextInt();
	  System.out.println("Geben Sie die zweite Zahl ein :");
	  double h = s.nextInt();
	  double i = g * h ;
	  System.out.println("Das Produkt aus " + g + " und " + h + " ist : " + i);
	   
  }
     Division(c);
	  }
	
	private static void Division (double d){
  if (d==4){
	
	Scanner s = new Scanner(System.in);
	  System.out.println("Geben sie die erste Zahl ein :");
	  double j = s.nextInt();
	  System.out.println("Geben Sie die zweite Zahl ein :");
	  double k = s.nextInt();
	  double l = j / k ;
	  System.out.println("Der Quotient on " + j + " und " + k + " ist : " + l);
	  
	  
	  
  }
	}
	}
 

Timothy Truckle

Top Contributor
[JAVA=19] x =s.nextInt(); // das wird zwar richtig ausgeführt , aber wenn die erste Zahl , die ich eingebe , kleiner oder gleich 4 ist , dann springt er in eine der anderen methoden :/
// Was jetzt kommt ist keine auswahl sondern sumpfes nacheinander aufrufen der Methoden.
// es ist also kein Wunder, dass er in jede rein geht, egal was Du eingegeben hast.
Addition(x);
Subtraktion(x);
Multiplikation(x); // das wird immer zweimal aufgeführt ..
Division(x);} // wenn ich die Division wähle , führt er es zwar aus , aber 3 mal o: ich hab aber keine ahnung wieso ..[/code][JAVA=27] private static void Addition(double a){
// warum ist der Parameter dieser methode nicht vom selben Typ, wie die Variable, die ihr beim Aufruf übergeben wird?[/code][JAVA=41] private static void Subtraktion(double b){
if(b==2){
// block zur Übersicht gelöscht
} // und? Fällt Dir was auf?
Multiplikation(b); // dieses Problem wiederholt sich in jeder weiteren Methode.

} [/code]
bye
TT
 

MCmarekAF

Mitglied
ist es denn schlimm , dass er dann nochmal in jede methode reingeht ?
Ich meine , dass er es auch nur ausführt wenn die Annforderungen der Schleife erfüllt werden oder ?

ähhm zu dem zweitem : ich habe mir ein paar Tutorial auf youtube angeguckt und da wurde gesagt , dass es egal ist wie ich die Variable in der Methode nenne o: hat das irgend eine Auswirkung auf das problem das ich habe ?

beim dritten fällt mir nichts auf o: was habe ich falsch gemacht ?
danke für deine Hilfe (:)
 

Timothy Truckle

Top Contributor
ist es denn schlimm , dass er dann nochmal in jede methode reingeht ?
Ja, weil du so verschleierst, dass
Code:
x
die Art der Rechenoperation auswählt. Deine Taktik wird dir noch richtig Kopfzerbrechen bereiten, wenn Du mal 'ne GUI für Deinen Taschenrechner nachrüsten musst.

Es gibt eine bessere prozedurale Lösung mittels
Code:
switch
und eine noch bessere OO-Lösung mittels
Code:
enum
dafür. Beide machen Dein Programm aber nicht GUI-tauglicher. Dazu ist es jetzt noch zu schlecht.

wenn die Annforderungen der Schleife erfüllt
Du hast keine Schleifen, nur Verzweigungen.

ich habe mir ein paar Tutorial auf youtube angeguckt und da wurde gesagt , dass es egal ist wie ich die Variable in der Methode nenne o:
Den Namen ja, aber der Typ muss stimmen. In diesem Fall klappt das rein technisch, weil Java deinen
Code:
int
heimlich in einen
Code:
double
umwandelt. Da aber fließkommazahlen in Computerprogrammen so generell ihre Probleme haben kann das auch mal ganz böse in's Auge gehen.

beim dritten fällt mir nichts auf o: was habe ich falsch gemacht ?
Das Ist (in Verbindung mit 1) die Ursache für Dein Wiederholungsproblem:
Am Ende der Subtraction (die er wegen dem if am Anfang nicht macht) ruft er die Division das erste mal auf (und führt sie durch). Nach der (ebenfalls nicht durchgeführten) Multiplikation noch mal, und dann noch mal aus Zeile 23. Macht 3 Durchläufe für die Division.

Die Frage die man sich stellen muss ist: warum solle nach einer Subtraktion eine Divison aufgerufen werden?

bye
TT
 
T

tröööt

Gast
kann mir mal bitte wer erklären was dieser thread hier in diesem sub-forum zu suchen hat ?

ich glaube man sollte in die faq noch sowas wie folgendes aufnehmen : was ist das richtige sub-forum ?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Messoras Launcher für mein Spiel Netzwerkprogrammierung 7
C Über welchen Netzwerkadapter kommt mein receive? Netzwerkprogrammierung 15
P Warum lässt sich mein Server und mein Client einfach nicht schließen?!?! Netzwerkprogrammierung 16
lacyuu Warum empfängt mein Stream keinen Input? Netzwerkprogrammierung 4
T Wieso ist mein Objekt leer? Netzwerkprogrammierung 6
G server für mein spiel. Netzwerkprogrammierung 5
A mein Code compiliert nicht! Netzwerkprogrammierung 2
R Mein FileTransfer Programm Netzwerkprogrammierung 12
T Proxy will einfach nicht mein prog akzeptieren Netzwerkprogrammierung 3
K Threads/Server/telnet Fehler Netzwerkprogrammierung 2
X Netty TLS Authentifizierung Fehler Netzwerkprogrammierung 1
OnDemand API Aufruf besser steuern, wie Fehler vermeiden Netzwerkprogrammierung 20
V Ich finde den Fehler nicht... Netzwerkprogrammierung 2
A sporadischer Fehler beim Schreiben auf NAS Netzwerkprogrammierung 2
K Socket Netty Client wirft Fehler! Netzwerkprogrammierung 3
F HTTP Website parsen Fehler 403 Netzwerkprogrammierung 2
M Socket Verschlüsselte Kommunikation - Fehler Netzwerkprogrammierung 1
D Komischer Fehler Readline() Netzwerkprogrammierung 7
CookieSoft Fehler bei Socket Netzwerkprogrammierung 4
B RMI & Mysql -> Fehler bei der Compilierung Netzwerkprogrammierung 4
C Fehler bei PDF-Download Netzwerkprogrammierung 5
M ActiveMQ Anfänger-Fehler Netzwerkprogrammierung 3
N Socket Fehler bei Streams Netzwerkprogrammierung 2
F Socket ImageIcon über Socket --> Fehler Netzwerkprogrammierung 14
M chat als applet umgeschrieben - unbekannter fehler :( Netzwerkprogrammierung 2
B Socket Daten empfangen funktioniert nicht richtig - wo liegt der Fehler? Netzwerkprogrammierung 7
L NullPointerException...finde den Fehler nicht Netzwerkprogrammierung 10
E einfache Frage: wie Fehler untersuchen mit Tomcat Netzwerkprogrammierung 5
R Fehler bei RMI in Verbidung mit JDBC Netzwerkprogrammierung 6
L RMI Programm beendet ohne Fehler sofort nach Start (Windows 2000) Netzwerkprogrammierung 7
R Server - Client - Fehler? Netzwerkprogrammierung 3
M SOAP Messaging Fehler Netzwerkprogrammierung 10
J RMI Fehler beim Proxy Netzwerkprogrammierung 2
B Fehler 401 bei http GET Netzwerkprogrammierung 2
H RMI Fehler: access denied Netzwerkprogrammierung 10
J Vom BufferedReader lesen -> hängt ohne Fehler,ohne Except Netzwerkprogrammierung 2
C irc client: Fehler 451 Netzwerkprogrammierung 12
G Heimnetzwerkchatprogramm: Fehler im Code Netzwerkprogrammierung 11

Ähnliche Java Themen


Oben