Dreieck prüfen

mediendennis

Neues Mitglied
Hallo,

lerne gerade Java an der Uni und habe folgendes Problem.
Die Aufgabe ist es ein Programm zu schreiben, welches die Seitnlängen eines Dreiecks liest und prüft, ob es sich dabei um ein gleichseitiges, gleichschenkeliges, rechtwinkeliges, gültiges oder ungültiges Dreieck handelt.
Ungülitg halt dann, wenn eine Seiten länge 0 oder negativ ist.

Ich habe es eigentlich hinbekommen, allerdings klappt die Abfrage nicht immer?? Woran kann das liegen??? Wäre über jede Hilfe dankbar.

Hier mein Code:

Code:
public class Dreieck {

	public static void main ( String[] args ) {
        
	// Deklarationen der 3 Seitenlängen des Dreiecks
	
	double a;
	double b;
	double c;
	
		// Berechnung und Bildschirmausgabe
        
	    {
		System.out.println ("");
		System.out.println ("Bitte geben Sie die Laengen der 3 Seiten des zu untersuchenden Dreiecks ein.");
		System.out.println ("Bitte verwenden Sie anstelle eines Dezimalkommas einen Dezimalpunkt.");
		System.out.println ("");
		
		a = In.readDouble(); b = In.readDouble(); c = In.readDouble();
		
		
		
			// Überprüfung ob das Dreieck gleichseitig ist
		
			if (a==b&&b==c)
					{
					System.out.println ("Das Dreieck mit den Seitenlaengen " + a + ", "+ b + " und " + c + " ist gueltig und gleichseitig.");
					}
					
				// Überprüfung ob Dreieck gleichschenkelig ist

				else if ((a==b||a==c||b==c))
			
							{
							System.out.println ("Das Dreieck mit den Seitenlaengen " + a + ", "+ b + " und " + c + " ist gueltig und gleichschenkelig.");
							}
					
					// Überprüfung ob das Dreieck rechtwinkelig ist				
					
					else if (Math.pow(a,2)+Math.pow(b,2)==Math.pow(c,2))
		
									{
									System.out.println ("Das Dreieck mit den Seitenlaengen " + a + ", "+ b + " und " + c + " ist gueltig und rechtwinkelig.");
									}
						
						else if (a<=0)				
					
									{
									System.out.println ("UNGUELTIG!");
									}
						else if (b<=0)				
					
									{
									System.out.println ("UNGUELTIG!");
									}
						else if (c<=0)				
					
									{
									System.out.println ("UNGUELTIG!");
					}			
					
	    }
	
	}
	
}


Bin gerade in der 3. Vorlesung, also soo viel kann ich noch nicht!

LG dennis
 
Zuletzt bearbeitet von einem Moderator:
M

Marcinek

Gast
Und wann kappt es nicht?


Das hier ist falsch: siehe posting drunter
Nur weil die Seiten den Satz von Pytagoras erfüllen, bedeutet es nicht, dass das Dreieck rechtwinklig ist. (Beweis: a= 1, b=1, c= 1 ==> 1^2 + 1 ^2 = 1 ^2 ==> Alle Winkel haben aber ~ 60 grad
 
Zuletzt bearbeitet von einem Moderator:

XHelp

Top Contributor
Zumal ich fürs erste untersuchen würde, ob es ein Dreick ist... Laut deinem Programm müsste 1,1,100 ein gleichschenkliges Dreieck sein.
 

mediendennis

Neues Mitglied
Danke schonmal für die Antworten.

Die Abfrage klappt an und für sich ja. Aber wenn ich zB den zweiten Wert mit 0 eingebe, klappt manchmal die Ausgabe "Ungültig" und manchmal nicht.

??? Keine Ahnung wieso!
 
S

SlaterB

Gast
ein Programm mit System.in-Eingabe ist immer schlecht (bei dir gar unbekannte Eingabe),
wenn möglich teste und poste es mit
> double a = 3;
> double b= 0;
> double c = 5;
oder was auch immer und ohne Eingabe, dann können es auch andere nachvollziehen

mit Eingabe kann alles mögliche schiefgehen,
aber du kannst dein Programm danach debuggen/ loggen,
loggen z.B. mit System.out.println(),
fängt direkt nach der Eingabe an:
System.out.println("a ist .., b ist .. usw"),

dann schreibst du notfalls in jedes einzelnen if/else auch eine Ausgabe, bis du exakt nachvollzogen hast, was passiert,
bei den ersten if/else vielleicht unnötig da die richtigen Ausgaben sowieso eindeutig zeigen, was passiert ist,
aber weiter hinten:

> else if (a<=0) {
> System.out.println ("UNGUELTIG! a<=0");
> } else if (b<=0) {
> System.out.println ("UNGUELTIG! b<=0");
> } else if (c<=0) {
> System.out.println ("UNGUELTIG! c <=0");
usw.

wenn gar keine Ausgabe kommt baue ganz am Ende noch ein else rein, gib dort nochmal alle Werte aus,
gib auch die boolean-Vergleiche aus:
System.out.println("ist b <= 0?: "+(b <= 0));

usw.,
jeden einzelne Aktion des Programms kannst du komplett nachvollziehen,
es keinen Grund, dies nicht selber zu machen und andere zu fragen ;)
 

Andi_CH

Top Contributor
Das eigentliche Problem ist sicher nicht der Java-code der überprüfung, sondern ein IO Problem
aus diesem Grund meine Lösung :)

Solche Funktionalitäten sollten immer in Prozeduren gekapselt werden. Das macht sie wiederverwendbar und vor allem testbar.

(Ach ja Dennis, mach doch bitte JAVA und nicht CODE Tags ...)

Frage an die Profis, eigentlich sind ja Dreiecksseiten keine int.
Ein Dreick mit a=5, b=5 und c=sqrt(50) ist aber gültig und rechtwinklig. Gibt es einen Zahlentyp oder eine Möglichkeit die Rechtwinkligkeit zu überprüfen (ok. mit Runden hab ichs auch hinbekommen ;-) )

Java:
public class Dreieck {
	
	public static void main( String[] args ) {
		prüfeDreieck(0, 1, 2);  // ungültiger Wert
		prüfeDreieck(1, 2, 10); // ungültiges Dreieck
		prüfeDreieck(1, 1, 1);  // gleichseitig und gleichschenklig
		prüfeDreieck(5, 5, 3);  // gleichschenklig
		prüfeDreieck(3, 4, 5);  // rechtwinklig
		// ein rechtwinklig gleichschenkliges Dreieck lässt sich IMHO nicht
                // mit Integern bilden umstellen auf double bringt auch nichts,
                // weil dann der Vergleich in prüfeDreieck schief läuft.
		// double x = 3;
		// Math.pow(Math.sqrt(x), 2) == x ist false! 
	}

	public static void prüfeDreieck (int a, int b, int c)
	{
		//Zuerst auf grundsätzliche Gültigkeit überprüfen
		if(a<=0 || b<=0 || c<=0) {
			System.out.println("Einer der Werte " + a + ", " + b + " oder " + c + " ist ungültig");
		} else if ((a+b<c) || (a+c<b) || (b+c<a)) {
			System.out.println("Mit den Längen " + a + ", " + b + " und " + c + " kann kein Dreieck gezeichnet werden");
		} else {
			// Die folgenden Prüfungen sollten sich nicht ausschliessen, denn es
			// gibt auch rechtwinklig gleichschenklige Dreiecke und ein 
			// gleichseitiges Dreieck ist auch gleichschenklig
			//
			// Überprüfung ob das Dreieck gleichseitig ist
			if (a==b && b==c)
			{
				System.out.println ("Das Dreieck mit den Seitenlaengen " + a + ", "+ b + " und " + c + " ist gueltig und gleichseitig.");
			}
			// Überprüfung ob das Dreieck gleichschenklig ist
			if ((a==b||a==c||b==c))
			{
				System.out.println ("Das Dreieck mit den Seitenlaengen " + a + ", "+ b + " und " + c + " ist gueltig und gleichschenklig.");
			}
			// Überprüfung ob das Dreieck rechtwinklig ist	
			if ((Math.pow(a,2)+Math.pow(b,2)==Math.pow(c,2)) ||
					(Math.pow(a,2)+Math.pow(c,2)==Math.pow(b,2)) ||
					(Math.pow(b,2)+Math.pow(c,2)==Math.pow(a,2)))
			{
				System.out.println ("Das Dreieck mit den Seitenlaengen " + a + ", "+ b + " und " + c + " ist gueltig und rechtwinklig.");
			}
		}			
	}
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
_so_far_away_ pascalsches Dreieck Zentrierung. Java Basics - Anfänger-Themen 12
laxla123 Dreieck erstellen Java Basics - Anfänger-Themen 1
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
G Magisches Dreieck Java Basics - Anfänger-Themen 2
F Pascalsches Dreieck mit Rückgabewert Java Basics - Anfänger-Themen 2
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
S Überprüfung rechtwinkliges Dreieck Java Basics - Anfänger-Themen 4
Z Warum kein Dreieck aus Sternen? Java Basics - Anfänger-Themen 9
L Dreieck Java Basics - Anfänger-Themen 22
O Erste Schritte Pascalsche Dreieck Java Basics - Anfänger-Themen 3
H Stern Dreieck (Buch: Grundkurs Programmieren) Java Basics - Anfänger-Themen 2
L Pascalsches Dreieck Java Basics - Anfänger-Themen 4
D Pascal'sches Dreieck Java Basics - Anfänger-Themen 6
N Methoden Gleichseitiges Dreieck erstellen Java Basics - Anfänger-Themen 8
U Dreieck Java Basics - Anfänger-Themen 22
E Dreieck zeichnen Java Basics - Anfänger-Themen 3
1 2D-Array, dass das pascalsche Dreieck berechnet Java Basics - Anfänger-Themen 2
L Dreieck Kreis Java Basics - Anfänger-Themen 12
B Dreieck Flächenberechnung Java Basics - Anfänger-Themen 2
B Java Grafikprogrammierung Dreieck Java Basics - Anfänger-Themen 6
I Umgedrehtes Dreieck Java Basics - Anfänger-Themen 3
M Dreieck erstellen Java Basics - Anfänger-Themen 17
J Dreieck Ausgeben Java Basics - Anfänger-Themen 3
R Pascalsche Dreieck Java Basics - Anfänger-Themen 4
R Pascalsche Dreieck Java Basics - Anfänger-Themen 8
C Pascalsches Dreieck: Ausgabeproblem Java Basics - Anfänger-Themen 10
K pascalsches Dreieck Java Basics - Anfänger-Themen 8
H Compiler-Fehler Pascalsche Dreieck Java Basics - Anfänger-Themen 2
M Pascalsches Dreieck Java Basics - Anfänger-Themen 12
W Pascalsches Dreieck Java Basics - Anfänger-Themen 19
E Pascalsche Dreieck aus Java openbook Java Basics - Anfänger-Themen 3
B Bitte um Hilfe es geht um Array + Punkte wie Dreieck,Fläche etc. Java Basics - Anfänger-Themen 12
D Pascalsches Dreieck Java Basics - Anfänger-Themen 9
H Dreieck aus Zeichen Java Basics - Anfänger-Themen 4
L Paskalsche Dreieck im Array Java Basics - Anfänger-Themen 2
T Pascalsche Dreieck ERKLÄRUNG Java Basics - Anfänger-Themen 6
U Rekursive lösung von pascal dreieck Java Basics - Anfänger-Themen 11
H2SO3- dreieck, bild --> maus klick event. Wie gehts? Java Basics - Anfänger-Themen 10
Antoras Dreieck zeichnen Java Basics - Anfänger-Themen 2
A Problem Gleichseitiges Dreieck aus Sternchen Java Basics - Anfänger-Themen 7
G Pascalsche Dreieck in Dreieckform Java Basics - Anfänger-Themen 2
X Pascalsche Dreieck Java Basics - Anfänger-Themen 6
G Dreieck mit Java Apllet Java Basics - Anfänger-Themen 10
V Dreieck spiegeln Java Basics - Anfänger-Themen 3
L Dreieck soll Farbe ändern Java Basics - Anfänger-Themen 4
L Dreieck füllen Java Basics - Anfänger-Themen 4
X Dreieck ausgeben Java Basics - Anfänger-Themen 3
B Hindergrundfarbe in JPanel und Dreieck zeichnen Java Basics - Anfänger-Themen 4
D Das Problem mit dem Dreieck. Java Basics - Anfänger-Themen 5
B auf der Spitze stehendes Dreieck mit for-Schleifen Java Basics - Anfänger-Themen 6
lan2711 Anfänger: Konstruktion Dreieck Java Basics - Anfänger-Themen 2
G Pascalsches Dreieck Java Basics - Anfänger-Themen 8
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
I Auf vollen Monat prüfen? Java Basics - Anfänger-Themen 22
A Dateiname auf Vorkommen prüfen Java Basics - Anfänger-Themen 29
I Prüfen, ob Anzahl an Monate ein Jahr ergeben Java Basics - Anfänger-Themen 4
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
W Klasse existiert prüfen Java Basics - Anfänger-Themen 5
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
X Zwei Dimensionales Array prüfen Java Basics - Anfänger-Themen 1
B Prüfen, ob Zeit Überschreitung Java Basics - Anfänger-Themen 2
B Sudoku prüfen Java Basics - Anfänger-Themen 13
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
X Array auf Leerstellen prüfen Java Basics - Anfänger-Themen 1
FelixN Prüfen, ob ein 2D-Array rechteckig ist Java Basics - Anfänger-Themen 42
C Erste Schritte JComboBox Einträge auf Duplikat prüfen Java Basics - Anfänger-Themen 4
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
C Array auf Null-Inhalte prüfen Java Basics - Anfänger-Themen 9
B Prüfen, ob Country Code in Europa ist? Java Basics - Anfänger-Themen 24
L Prüfen ob Fax (Tif-Datei) vollständig angekommen ist Java Basics - Anfänger-Themen 15
O Datenstruktur auf SET prüfen in O(n) Java Basics - Anfänger-Themen 32
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
B Prüfen, ob Datum2 der gleiche Tag ist wie Datum1 Java Basics - Anfänger-Themen 10
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
S Array doppelter Wert prüfen Java Basics - Anfänger-Themen 7
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
K Linux Speicherplatz mit Java prüfen Java Basics - Anfänger-Themen 4
O Array nach gleichen Zahlen prüfen und ausgeben Java Basics - Anfänger-Themen 6
G Compiler-Fehler Auf Anagramm prüfen Java Basics - Anfänger-Themen 1
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Input/Output Prüfen wie oft etwas eingegeben wurde Java Basics - Anfänger-Themen 2
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
S Prüfen ob Zelle in Excel leer ist funktioniert nicht (Apache POI) Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben