fehler bei quadrieren

strobi80

Mitglied
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...



Java:
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( "------------------------------");
						}
 
Zuletzt bearbeitet:

strobi80

Mitglied
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?
 
S

SlaterB

Gast
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
 
P

pappawinni

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

strobi80

Mitglied
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...


Java:
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

Top Contributor
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.
 
P

pappawinni

Gast
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

Mitglied
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...

Java:
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 );
			
	}

	}
}
 

Neue Themen


Oben