# The operator && is undefined for the argument type(s) String, boolean



## Lieger (13. Okt 2012)

Hallo zusammen,
Ich bin gerade daran ein Programm zu schreiben, dass Masse umwandeln soll. Vorerst nur Längenmasse, Volumen usw. werde ich später noch hinzufügen. 
Nun bin ich soweit, dass man eingeben kann, welches Mass in welches Mass umgewandelt werden soll.
z.B: 10 Zentimeter in Meter umwandeln. Nun aber will ich eine If Abfrage machen, diese sollte bewerkstelligen, falls das Mass 1 = "Zentimeter" ist UND falls das Mass 2 = "Meter" ist , dass die Zahl die man eingegeben hat durch 100 gerechnet wird. 
Doch wenn ich && eingebe, um dem Programm zu sagen, beide Variablen müssen stimmen, dass der Befehl ausgeführt wird, bekomme ich die Fehlermeldung:

 The operator && is undefined for the argument type(s) String, boolean

Hier ist der Quellcode:


```
import java.util.Scanner;
public class Umrechner {
	public static void main (String args[]){
		System.out.println("Willkommen");
		System.out.println("Erlaubte Masse zur Eingabe: Millimeter, Zentimeter, Dezimeter, Meter, Kilometer,");
		System.out.println("Welches Mass willst du umwandeln?");
		Scanner julian = new Scanner(System.in);
		String eingabemass = julian.nextLine();
		System.out.println("Welche Anzahl von diesem Mass willst du umwandeln?");
		Scanner julian2 = new Scanner(System.in);
		int eingabezahl = julian2.nextInt();
		System.out.println("In welches Mass willst du umwandeln?");
		Scanner julian3 = new Scanner(System.in);
		String eingabemass2 = julian3.nextLine();
		if (eingabemass = "Millimeter" && eingabemass2 = "Zentimeter" );
		{
			
		}
	}

}
```

Ich hab es noch nicht fertig gemacht, da ich ja diesen Fehler habe. Soweit ich die Ausgabe verstehe ist "&&" nicht kompatibel mit String - und boolean - Variablen. Gibt es da einen Variablen-Typ der guter Ersatz ist?
Ich wäre sehr dankbar wenn mir jemand helfen könnte.


Gruss
Lieger


PS: Sorry, falls ihr euch darüber aufregt, bin noch ein totaler Anfänger.


----------



## eRaaaa (13. Okt 2012)

= ist eine Zuweisung, == ist ein Vergleich.
In dem Fall ist aber wohl beides nicht richtig, bitte lies den FAQ-Beitrag in http://www.java-forum.org/top-fragen/1350-vergleichen-strings.html


----------



## Lieger (13. Okt 2012)

Vielen Dank , ist wirklich ein blöder Fehler.
Und Sorry, dass ich die FAQ nicht gelesen habe, ich weiss wie das nervt wenn jemand Fragen aus den FAQ's stellt....


----------



## Pentalon (13. Okt 2012)

Hi Lieger

Strings können nicht mit == verglichen werden.
Dafür gibt es equals.


```
if (eingabemass.equals("Millimeter") && eingabemass2.equals("Zentimeter"));
        {
            
        }
```

Pentalon


----------



## Lieger (13. Okt 2012)

Nächstes Problem.
Da ich es für unnötig halte gleich nochmal einen Thread aufzumachen, finde ich es okay wenn ich hier ein neues Problem reinposte, ist ja dasselbe Programm.


Also:

Ich habe nun = zu den equals geändert, und unten erstmal alle if-Abfragen zu Millimeter und Zentimeter gemacht.
Wenn ich nun aber 25 Millimeter zu Zentimeter umwandeln will kommt:

Das Ergebnis 2.5
Das Ergebnis 0.025
Das Ergebnis 2.5E-5
Das Ergebnis 2.5E-11
Das Ergebnis 2.5E-10
Das Ergebnis 2.5E-10
Das Ergebnis 2.5E-11
Das Ergebnis 2.5E-13
Das Ergebnis 2.4999999999999998E-18

(Den oberen Teil habe ich nicht geschrieben, da er nichts mit dem Problem zu tun hat)
Eigentlich stimmt ja 2,5 aber was soll der rest?

Nochmal den Code:


```
import java.util.Scanner;
public class Umrechner {
	public static void main (String args[]){
		System.out.println("Willkommen");
		System.out.println("Erlaubte Masse zur Eingabe: Millimeter, Zentimeter, Dezimeter, Meter, Kilometer,");
		System.out.println("Welches Mass willst du umwandeln?");
		Scanner julian = new Scanner(System.in);
		String eingabemass = julian.nextLine();
		System.out.println("Welche Anzahl von diesem Mass willst du umwandeln?");
		Scanner julian2 = new Scanner(System.in);
		double eingabezahl = julian2.nextDouble();
		System.out.println("In welches Mass willst du umwandeln?");
		Scanner julian3 = new Scanner(System.in);
		String eingabemass2 = julian3.nextLine();
		if (eingabemass == "Millimeter" && eingabemass2 == "Zentimeter" );
		{
			eingabezahl = eingabezahl / 10;
			System.out.println("Das Ergebnis " +  eingabezahl);
		}
		if (eingabemass.equals("Millimeter") && eingabemass2.equals("Dezimeter"));
		{
			eingabezahl = eingabezahl / 100;
			System.out.println("Das Ergebnis " +  eingabezahl);
		}
		if (eingabemass.equals("Millimeter")&& eingabemass2.equals("Meter"));
		{
			eingabezahl = eingabezahl / 1000;
			System.out.println("Das Ergebnis " +  eingabezahl);
		}
		if (eingabemass.equals("Millimeter") && eingabemass2.equals("Kilometer") );
		{
			eingabezahl = eingabezahl / 1000000;
			System.out.println("Das Ergebnis " +  eingabezahl);
		}
		if (eingabemass.equals("Zentimeter") && eingabemass2.equals("Millimeter") );
		{
			eingabezahl = eingabezahl * 10;
			System.out.println("Das Ergebnis " +  eingabezahl);
		}
		if (eingabemass.equals("Zentimeter") && eingabemass2.equals("Zentimeter") );
		{
			eingabezahl = eingabezahl * 1;
			System.out.println("Das Ergebnis " +  eingabezahl);
		}
		if (eingabemass.equals("Zentimeter") && eingabemass2.equals("Dezimeter"));
		{
			eingabezahl = eingabezahl / 10;
			System.out.println("Das Ergebnis: " +  eingabezahl);
		}
		if (eingabemass.equals("Zentimeter") && eingabemass2.equals("Meter") );
		{
			eingabezahl = eingabezahl / 100;
			System.out.println("Das Ergebnis " +  eingabezahl);
		}
		if (eingabemass.equals("Zentimeter") && eingabemass2.equals("Kilometer") );
		{
			eingabezahl = eingabezahl / 100000;
			System.out.println("Das Ergebnis " +  eingabezahl);
		}
	}

}
```


Wäre nett wenn mir da jemand helfen könnte.
Gruss
Lieger


----------



## xehpuk (13. Okt 2012)

Das liegt an den Semikola hinter den ifs. Entfern diese.


----------



## Lieger (13. Okt 2012)

Vielen Dank,
ich glaube nun sind alle meine Probleme gelöst. 

PS: Ihr seit wirklich eine grosse Hilfe, danke. :applaus:


----------



## MrClave (13. Okt 2012)

1. Du hast bei der ersten if-Abfrage noch "==" - Solltest du vielleicht noch zu equals ändern.
Im besten Falle noch 
	
	
	
	





```
.equalsIgnoreCase
```
, da dann z.B. auch "zentimeter" statt "Zentimeter" akzeptiert wird.

2. Es reicht, wenn du einen Scanner ganz oben definierst und ihn dann für alle Inputs benutzt.

```
Scanner scan = new Scanner(System.in)
```

3. Du solltest statt 100x "if" diese Struktur benutzen:


```
if( condition ){
//Ausführen
} else if ( condition ) {
//Ausführen
} else if (condition ) {
//Ausführen
}
```


----------



## Pentalon (13. Okt 2012)

Ach wiel Geil 
Ich habe das mitkopiert dieses böse Semicolon.
Sorry, ist mir gar nicht aufgefallen.

Pentalon


----------

