# fehler bei quadrieren



## strobi80 (17. Dez 2012)

bitte bitte liebes forum, sag mir, warum bei disem prog (das rein theoretisch einwandfrei funktioniert) ich ständig probleme bekomm, wenns darum geht, zwei zahlen zu quadrieren...




```
import java.lang.Math;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class PA2a {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		
		String eingabeWert;					// Usereingabe
		double eingabeAuswahl;				// Auswahlmenue
		double ausgabeFlaeche ; 			// Fläche
		double ausgabeUmfang ;				// Umfang
		
		double a;
		double b;
		double c;
		double h;
		double q;
		double p;
		double A;
		double U;
		
		
		BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
				
			do {
				System.out.println("1. Berechnung der Dreiecksfläche");
				System.out.println("2. Berechnung des Umfangs eines Dreiecks.");
				System.out.println("3. Abbruch");
					
				eingabeWert = eingabe.readLine();
				eingabeAuswahl = Double.parseDouble(eingabeWert);
							
				if (eingabeAuswahl == 1)
				
					do{
					
					{	System.out.println("1. Eingabe von h und c");
						System.out.println("2. Eingabe von a, b");
						System.out.println("3. Eingabe von b, c");
						System.out.println("4. Eingabe von a, c");
						System.out.println("5. Abbruch");
					}
					
					eingabeWert = eingabe.readLine();
					eingabeAuswahl = Double.parseDouble(eingabeWert);
										
						if (eingabeAuswahl == 1)
						{	System.out.println("Werte für h und c:");
						  String h = eingabe.readLine();
					      String c = eingabe.readLine();
					        int i = Integer.parseInt(h);
					        int j = Integer.parseInt(c);
							ausgabeFlaeche = ((c/2 + math.sqrt(<(c²/4)-h²>))*(h²*(c/2-math.sqrt(<(c²/2-h²)>))))/2; 		//berechnung: dreiecksfläche mit h und c
							System.out.println( "Größe der Dreiecksfläche: " + ausgabeFlaeche );
							System.out.println( "------------------------------");
						}


	if (eingabeAuswahl == 2)
						{	System.out.println("Werte für a und b:");
						  String a = eingabe.readLine();
					      String b = eingabe.readLine();
					      	int i = Integer.parseInt(a);
					        int j = Integer.parseInt(b);
							ausgabeFlaeche = (a+b)/2; 		//berechnung: dreicksfläche mit a und b
							System.out.println( "Größe der Dreiecksfläche: " + ausgabeFlaeche );
							System.out.println( "------------------------------");
						}
						
						
						if (eingabeAuswahl == 3)
						{	System.out.println("Werte für b und c:");
						  String b = eingabe.readLine();
					      String c = eingabe.readLine();
					        int i = Integer.parseInt(b);
					        int j = Integer.parseInt(c);
							ausgabeFlaeche = ((Math.sqrt(c²*b²))*b)/2; 		//berechnung: dreicksfläche mit b und c
							System.out.println( "Größe der Dreiecksfläche: " + ausgabeFlaeche );
							System.out.println( "------------------------------");
						}
```


----------



## strobi80 (17. Dez 2012)

die zweite if-anweisung

if (eingabeAuswahl == 2)

funktioniert ohne probleme. nur die anweisungen, in denen irgendwas quadriert wird kommen fehler... liegts an irgendwelchen fehlenden imports?


----------



## SlaterB (17. Dez 2012)

c mit 2 oben kann man jedenfalls nicht schreiben, schlage doch erlaubte Java-Syntax vorher nach?
schreibe jeweils etwa c*c, verwende Math.pow() oder eine eigene Methode fürs Quadrieren

ein Testprogramm wäre übrigens eine main-Methode mit 1-3 Code-Zeilen Inhalt, 
einen einfachen Testwert quadrieren, dein kompliziertes Programm ist da recht unnötig


----------



## pappawinni (17. Dez 2012)

c²*b² ist aber kein Java.
Du kannst c*c*b*b rechnen... oder Math.pow(c,2)*Math.pow(b,2)


----------



## strobi80 (17. Dez 2012)

HA... ihr leut seid die onlinekoste wert 
dankschee...


----------



## strobi80 (17. Dez 2012)

ich blick immer noch nicht bei den verschiedenen variablentypen durch...
wenn ich einen Wert über benutzereingabe eingeb, wird der doch zuerst als string gehandelt und dann in integer umgewandelt...auch wenn ich den anfangs als double deklariert habe, oder bin ich da total verkehrt? fehlermeldung am ende...



```
import java.io.BufferedReader;
import java.io.InputStreamReader;


public class division {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		

		String eingabeWert;				// Usereingabe
		double eingabeAuswahl;				// Auswahlmenue
		double ausgabeFlaeche ; 			// Fläche
		
		double a;
		double b;
	
		BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));	 
		
		
		{	System.out.println("Werte für a und b:");
			String a = eingabe.readLine();
			String b = eingabe.readLine();
	      	            int i = Integer.parseInt(a);
	                       int j = Integer.parseInt(b);
			ausgabeFlaeche = (a*b); 	//berechnung: dreicksfläche mit a und b
			System.out.println( "Größe der Dreiecksfläche: " + ausgabeFlaeche );
			
	}

	}
}
```



im dem fall bekomm ich immer folgende fehlermeldung:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	Duplicate local variable a
	Duplicate local variable b
	The operator * is undefined for the argument type(s) java.lang.String, java.lang.String

	at division.main(division.java:23)


----------



## Final_Striker (17. Dez 2012)

strobi80 hat gesagt.:


> wenn ich einen Wert über benutzereingabe eingeb, wird der doch zuerst als string gehandelt und dann in integer umgewandelt...auch wenn ich den anfangs als double deklariert habe, oder bin ich da total verkehrt? fehlermeldung am ende...



Ja. Aber trotzdem darf man nicht mehrere Variablen mit dem gleichen Namen in einer Methode erstellen.

Außerdem kann man Strings nicht multiplizieren.


----------



## pappawinni (17. Dez 2012)

Du willst einmal a und b als double deklarieren,
dann a und b als String,
dann a und b in die integer i und j wandeln,
dann die Strings a und b miteinander mulitipizieren.
Wofür brauchst du jetzt nochmal i und j ?


----------



## strobi80 (17. Dez 2012)

jetzt läuft die sach.... aber ma im ernst... diese jongliererei mit den variablennamen und wie die dann übernommen werden is scho ne komplizierte gschicht...


```
public class division {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		
		
		
		String eingabe1;	
		String eingabe2;				// Usereingabe
		double ausgabeFlaeche ; 			// Fläche
		
		double a=0.0;
		double b=0.0;
	
		BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));	 
		
		{	System.out.println("Werte für a und b:");
				
		// Eingabe, Double-Wert einlesen
		eingabe1 = eingabe.readLine();
		eingabe2 =eingabe.readLine();
		a = Double.parseDouble(eingabe1);
		b = Double.parseDouble(eingabe2);
		
	
		ausgabeFlaeche = (a+b); 		//berechnung: dreicksfläche mit a und b
			System.out.println( "Größe der Fläche: " + ausgabeFlaeche );
			
	}

	}
}
```


----------

