2016-03-26 7 views
1

Wenn ich meine Höhe und Basis eines Dreiecks einstelle, bekomme ich NaN. Zum Beispiel habe ich in dem unten stehenden Code "hi" als Höhe, b als "Basis" und h als "Hypotenuse", wenn ich 1 für die Basis und 1 für die Höhe gebe, bekomme ich NaN für die Hypotenuse. Wie ich es habe ist, dass wenn eine der Seiten unbekannt ist, dann wird der Benutzer es als 0 setzen, aber es funktioniert aus irgendeinem Grund nicht. Ich habe mich gefragt, ob es einen Fehler in meinem Code gibt?Versuch, einen Satz des Pythagoras zu machen, aber es funktioniert nicht wie geplant

Hinweis: c wie in c.nextDouble() zu sehen ist der Name des Scanners.

double h = 0, b = 0, hi = 0; 

System.out.println("Please enter in the sides as asked, if the unknown side is asked, then enter it as 0"); 

System.out.println("Enter the height of the triangle:"); 
hi = c.nextDouble(); 
System.out.println("Enter the base of the triangle: "); 
b = c.nextDouble(); 
System.out.println("Enter the hypotenuse of the triangle: "); 
h = c.nextDouble(); 

if (h != 0) { 
    h = Math.sqrt((b * b) + (hi * hi)); 

    System.out.println("The hypotenuse side is:" + h); 

} else if (hi != 0) { 
    hi = Math.sqrt((h * h) - (b * b)); 

    System.out.println("The height is: " + hi); 

} else if (b != 0) { 
    b = Math.sqrt((h * h) - (hi * hi)); 

    System.out.println("The height is: " + b); 
} 

Antwort

1

Es sieht aus wie Ihre if-Anweisungen nicht korrekt sind. Sie hatten die Logik gehen "wenn h nicht gleich 0 ist, setzen Sie es b^2 - hi^2." Das macht keinen Sinn, weil sie bedeuten würden, dass einer dieser Werte ebenfalls Null wäre.

auch Ihre Eingabe ist ein wenig aus. Java wird komisch, wenn Sie das \ n durch Drücken von Enter nicht akzeptieren. fügen Sie einfach c.nextLine(); nach jedem c.nextDouble()

Beispiel Eingabe greifen:

h = c.nextDouble(); 
c.nextLine(); //there is no need to store it anywhere. 

Logik fix:

if (h == 0) { 
    h = Math.sqrt((b * b) + (hi * hi)); 

    System.out.println("The hypotenuse side is:" + h); 

} else if (hi == 0) { 
    hi = Math.sqrt((h * h) - (b * b)); 

    System.out.println("The height is: " + hi); 

} else if (b == 0) { 
    b = Math.sqrt((h * h) - (hi * hi)); 

    System.out.println("The height is: " + b); 
} 

}

+0

Marke als Antwort bitte –

+0

Nextline() ist die einzige Funktion, die akzeptiert und behandelt die Endlinie –

Verwandte Themen