여기에 이미 삼각형에 대한 Java 질문이 있지만 알고 보았습니다. 내 문제에 대한 해결책을 찾을 수 없습니다.삼각형의 면적 및 유형 찾기
나는 사용자가 임의의 순서로 제공 할 수있는 삼각형 (의 변의 길이를 제공해야 할 숙제에서 일하고 있어요.
나는 한 오른쪽 (삼각형의 유형을 찾기 위해 , 이등변, 기타 등등). 지시에 없었기 때문에 scalene을 제외하고. 삼각형의 영역을 찾아야한다.
나는 100 라인 이상을 가지고 있지만, 여전히 작동하지 않는다. 컴파일 할 때 오류가 발생하지 않으며 실행시 제대로 작동하지 않습니다.
도움이 될만한 점이 많습니다. 정말 코드에 파고하지 않은 것이 실패 왜 그렇게 모르겠지만, 당신은 약간의 속임수와 수학에 사용할 수 있습니다 -
import javax.swing.JOptionPane;
public class TriangleChecker {
public static void main(String[] args) {
Boolean triangle, right, equilateral, isosceles;
triangle = false;
right = false;
equilateral = false;
String side1, side2, side3;
double s1, s2, s3, perimeter, areai, bi, hi, fhi, be, he, fhe, areae, br, hr, arear;
System.out.println("Hello welcome to the Triangle Checker");
side1 = JOptionPane.showInputDialog("Please enter side 1 of the triangle.");
side2 = JOptionPane.showInputDialog("Please enter side 2 of the triangle.");
side3 = JOptionPane.showInputDialog("Please enter side 3 of the triangle.");
s1 = Double.parseDouble(side1);
s2 = Double.parseDouble(side2);
s3 = Double.parseDouble(side3);
if ((s1 > s2 + s3) || (s2 > s1 + s3) || (s3 > s1 + s2)) {
triangle = false;
}
else {
triangle = true;
}
if ((s1 > s2 && s1 > s3) && (s1*s1 == s2*s2 + s3*s3)) {
right = true;
}
else if((s2 > s1 && s2 > s3) && (s2*s2 == s1*s1 + s3*s3)) {
right = true;
}
else if((s3 > s1 && s3 > s2) && (s3*s3 == s1*s1 + s2*s2)) {
right = true;
}
else {
right = false;
}
if((s1 == s2) && (s1 == s3)) {
equilateral = true;
right = false;
isosceles = false;
}
else {
equilateral = false;
}
if((s1 == s2) && (s1 != s3)) {
isosceles = true;
}
else if((s1 == s3) && (s1 != s2)) {
isosceles = true;
}
else if((s2 == s3) && (s1 != s3)) {
isosceles = true;
}
else {
isosceles = false;
}
if((isosceles = true) && (s1 == s2)) {
bi = (s3/2);
hi = ((s1*s1) - (bi*bi));
fhi = Math.sqrt(hi);
areai = bi * fhi;
}
else if((isosceles = true) && (s1 == s3)) {
bi = (s2/2);
hi =((s1*s1) - (bi*bi));
fhi = Math.sqrt(hi);
areai = bi * fhi;
}
else if((isosceles = true) && (s2 == s3)) {
bi = (s1/2);
hi = ((s2*s2) - (bi*bi));
fhi = Math.sqrt(hi);
areai = bi * fhi;
}
else {
bi = 0;
hi = 0;
fhi = 0;
areai = bi * fhi;
}
if(equilateral == true) {
be = (s1/2);
he = ((s2*s2) - (be*be));
fhe = Math.sqrt(he);
areae = be*he;
}
else {
be = 0;
he = 0;
fhe = 0;
areae = 0;
}
if((right = true) && (s1 < s2) && (s1 < s3) && (s2 < s3)) {
br = (s1/2);
hr =(s2);
arear = br*hr;
}
else if((right = true) &&(s1 < s2) && (s1 < s3) && (s3 < s2)) {
br = s1/1;
hr = s3;
arear = br*hr;
}
else if((right = true) && (s2 < s1) && (s2 < s3) && (s1 < s3)) {
br = s2/2;
hr = s1;
arear = br*hr;
}
else if((right = true) && (s2 < s1) && (s2 < s3) && (s3 < s1)) {
br = s2/2;
hr = s3;
arear = br*hr;
}
else if((right = true) && (s3 < s1) && (s3 < s2) && (s1 < s2)) {
br = s3/2;
hr = s1;
arear = br*hr;
}
else if((right = true) && (s3 < s1) && (s3 < s2) && (s2 < s1)) {
br = s3/2;
hr = s2;
arear = br*hr;
}
else {
br = 0;
hr = 0;
arear = 0;
}
perimeter = s1 + s2 + s3;
if(triangle = true) {
System.out.println("This is a triangle.");
}
else {
System.out.println("This does not equal a triangle.");
System.exit(0);
}
if (right == true) {
equilateral = false;
isosceles = false;
}
else if (equilateral == true) {
right = false;
isosceles = false;
}
else {
equilateral = false;
right = false;
}
if(right = true) {
System.out.println("This is a right triangle.");
}
else {
System.out.println("This is not a right triangle.");
}
if (equilateral = true) {
System.out.println("This is an equilateral triangle.");
}
else {
System.out.println("This is not an equilateral triangle.");
}
if (isosceles = true) {
System.out.println("This is an isosceles triangle.");
}
else {
System.out.println("This is not an isosceles triangle.");
}
if ((arear == 0) && (areae == 0)) {
System.out.println("The area of the triangle is " + areai + ".");
}
else if ((areai == 0) && (arear == 0)) {
System.out.println("The area of the triangle is " + areae + ".");
}
else {
System.out.println("The area of the triangle is " + arear + ".");
}
}
}
첫 번째로 보게되는 것은 비교 대신 할당 연산자를 사용하는 if 문을 사용하는 것입니다. 예를 들어'if (isosceles = true)'는 아마도'if (isosceles == true)'이거나 아니면'if (isosceles)'일 가능성이 있습니다. [내 대답] (http://stackoverflow.com/questions/21356277/java-if-statement-after-while-loop-not-working/21356308#21356308)에서 다른 질문을 확인하십시오. – csmckelvey
"컴파일 할 곳을 만들 때 오류가 발생하지 않고 실행될 때 제대로 작동하지 않습니다." 스택 오버플로는 개인 디버깅 팀이 아닙니다. 무엇이 잘못되었는지, 무엇을 시도했는지, 그리고 그 문제를 고치거나 이해하는 데있어 특별한 문제가 무엇인지 설명하십시오. – Shashank
내가 웹 사이트를 잘못 사용하면 죄송합니다. 내가 너무 많이 고심하고 있었기 때문에 나는 단지 설명을했다. 팁 Takendarkk에 감사드립니다. –