Operatoren If Anweisung Probelme

stefani

Mitglied
Guten Abend.
Ich hab folgendes Problem und zwar, wenn ich folgenden Code ausführe bekomme ich die gewünschte Ergebnisse:
Java:
import java.util.Scanner;


public class BestellungPruefen {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		final int CENT_PRO_SCHRAUBE =5;
		final int CENT_PRO_MUTTER=3;
		final int CENT_PRO_UNTERSCHEIBE =1;
		int gesamtBetrag;
		
		Scanner sc=new Scanner(System.in);
		int anzahlSchrauben, anzahlMutter, anzahlUnterscheiben;
		 System.out.println( "Anzahl Schrauben eingeben: " );
	        anzahlSchrauben = sc.nextInt();
	      System.out.println( "Anzahl Mutter eingeben: " );
	        	anzahlMutter = sc.nextInt();
	       System.out.println( "Anzahl Unterscheibe eingeben: " );
	    		anzahlUnterscheiben= sc.nextInt();
	    		if(anzahlSchrauben == anzahlMutter)
	    			
	    		System.out.println(gesamtBetrag=CENT_PRO_SCHRAUBE*anzahlSchrauben + anzahlMutter *CENT_PRO_MUTTER + anzahlUnterscheiben*CENT_PRO_UNTERSCHEIBE);
	    		else if (anzahlSchrauben != anzahlMutter)
	    			System.out.println("falsch");
	    		System.out.println(gesamtBetrag=CENT_PRO_SCHRAUBE*anzahlSchrauben + anzahlMutter *CENT_PRO_MUTTER + anzahlUnterscheiben*CENT_PRO_UNTERSCHEIBE);
	    		
	    		
	    			
	}

}
Wenn ich jedoch die If-Anweisung, wi folgt ändere bekomm ich die nach folgende Meldung:
Java:
	if(anzahlSchrauben == anzahlMutter)
[B]	    			gesamtBetrag=CENT_PRO_SCHRAUBE*anzahlSchrauben + anzahlMutter *CENT_PRO_MUTTER + anzahlUnterscheiben*CENT_PRO_UNTERSCHEIBE;
		    		System.out.println(gesamtBetrag);[/B]
		    		else if (anzahlSchrauben != anzahlMutter)
		    			System.out.println("falsch");
		    		System.out.println(gesamtBetrag=CENT_PRO_SCHRAUBE*anzahlSchrauben + anzahlMutter *CENT_PRO_MUTTER + anzahlUnterscheiben*CENT_PRO_UNTERSCHEIBE);


Syntax error on token "else", delete this token


wo ist das Problem??????
 

XHelp

Top Contributor
Das Problem ist, dass du keine geschweiften Klammern benutzt:
Java:
if (...) {
...
} else {
...
}
 

Fab1

Top Contributor
Benutze bei einer If-Anweisung immer Klammern if(){}

Bei deinem Fall ohne Klammern wird die If-Anweisung mit dem ersten Semikolon abgeschlossen. Wenn du Klammern setzt sollte das Problem weg sein.
 

stefani

Mitglied
vielenn Dank! hat geklappt :)
Ich hab nun eine do / while Schleife gemacht mit der man beliebdig das Programm ausführen kann.
Wie kann ich den Gesamtbetrag jedes mal abspreichen, wenn die Schleife durchläuft.
1x den aktuellen Gesamtpreis ausgeben
1x den gesamtbertag alle durchlaufenden Schleifen summieren.
Danke
 

XHelp

Top Contributor
du musst deine Variable außerhalb der Schleife deklarieren, dann wird die nicht bei jedem Schleifendurchlauf neu inizialisiert.
 

stefani

Mitglied
Ich hab nun sowas überlegt:
Java:
import java.util.Scanner;


public class BestellungPruefen {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		final int CENT_PRO_SCHRAUBE =5;
		final int CENT_PRO_MUTTER=3;
		final int CENT_PRO_UNTERSCHEIBE =1;
		int gesamtBetrag ;
		int temp = 0;
		String durchlauf;
		
		
		
		Scanner sc=new Scanner(System.in);
		do{
		int anzahlSchrauben, anzahlMutter, anzahlUnterscheiben;
		 System.out.println( "Anzahl Schrauben eingeben: " );
	        anzahlSchrauben = sc.nextInt();
	      System.out.println( "Anzahl Mutter eingeben: " );
	        	anzahlMutter = sc.nextInt();
	       System.out.println( "Anzahl Unterscheibe eingeben: " );
	    		anzahlUnterscheiben= sc.nextInt();
	    		
	    		    		
	    		if(anzahlSchrauben == anzahlMutter){
	    			                gesamtBetrag=CENT_PRO_SCHRAUBE*anzahlSchrauben + anzahlMutter *CENT_PRO_MUTTER + anzahlUnterscheiben*CENT_PRO_UNTERSCHEIBE;
	    			                    System.out.println(gesamtBetrag);
	    		}
	    			              else if (anzahlSchrauben != anzahlMutter){
	    			                        System.out.println("falsch");
	    			                    System.out.println(gesamtBetrag=CENT_PRO_SCHRAUBE*anzahlSchrauben + anzahlMutter *CENT_PRO_MUTTER + anzahlUnterscheiben*CENT_PRO_UNTERSCHEIBE);

	    		}
	    		
	    		 System.out.println("weiter machen ? " );
		    		 durchlauf= sc.next();
		} [COLOR="Red"]--------------hier Fehler meldung------- Syntax error, insert "while ( Expression ) ;" to complete DoStatement----[/COLOR]
		gesamtBetrag += temp;
		System.out.println(temp );
		while (durchlauf.equals("ok"));
	    	
	}

}
 

Fab1

Top Contributor
Wie kann ich den Gesamtbetrag jedes mal abspreichen, wenn die Schleife durchläuft.
1x den aktuellen Gesamtpreis ausgeben
1x den gesamtbertag alle durchlaufenden Schleifen summieren.

Grundsätzlich könnte man ein Array mit der Länge der Anzahl der Durchläufe erstellen und die Werte von Gesamtbetrag anschließend darin speichern. Sollte ich dich nicht gerade falsch verstehen. Für was brauchst du die Werte?

Den akt. Gesamtpreis kann man ja leicht mit einer Ausgabe innerhalb der Schleife ausgeben.

Den gesamtbetrag kannst du mit
Code:
gesamtbetrag = gesamtbetrag  + XXX
jedes mal aufrechnen, musst halt schauen was du dazu zählst.

[EDIT]Du hast eine Klammer falsch gesetzt.[/EDIT]
 

stefani

Mitglied
wenn ich die Klammer so setze
Java:
	gesamtBetrag += temp;
		System.out.println(temp );
		}while (durchlauf.equals("ok"));
dann wirdr gesamtBetrag rot unterstrichen "initiaize Veriable"
 

Fab1

Top Contributor
Dann mach das doch, oben direkt nach der main wo sie auch deklariert wurde.

Die Variable wird unterringelt, da die Initialisierung der Variable immer in einer If-Anweisung erfolgt. Wenn allerdings keine dieser If-Anweisung eintritt, dann hat die Variable keinen Wert, was natürlich nicht sein darf.
 

stefani

Mitglied
so ich hab es hier direkt in der IF-Block die Variabele einsetzt, scheint dann zu funktionieren
Java:
	if(anzahlSchrauben == anzahlMutter){
	    			                gesamtBetrag=CENT_PRO_SCHRAUBE*anzahlSchrauben + anzahlMutter *CENT_PRO_MUTTER + anzahlUnterscheiben*CENT_PRO_UNTERSCHEIBE;
	    			                    System.out.println(gesamtBetrag);
	    			                    temp +=gesamtBetrag;
	    			            		System.out.println(temp );
 
Zuletzt bearbeitet:

Neue Themen


Oben