Java 我能';无法使布尔类型方法正确返回
我试图编写一个程序,以任意顺序取三角形的三条边,按升序(a、b、c)重新排列,然后告诉用户三角形的类型和面积。但是,我无法找出我的代码有什么问题,因为它总是为我的isValid方法获取错误的真/假值。即使这些边不构成三角形,它仍然继续进行,就好像isValid方法返回true一样。有什么建议吗?谢谢Java 我能';无法使布尔类型方法正确返回,java,methods,Java,Methods,我试图编写一个程序,以任意顺序取三角形的三条边,按升序(a、b、c)重新排列,然后告诉用户三角形的类型和面积。但是,我无法找出我的代码有什么问题,因为它总是为我的isValid方法获取错误的真/假值。即使这些边不构成三角形,它仍然继续进行,就好像isValid方法返回true一样。有什么建议吗?谢谢 package javaapplication1; import java.util.Scanner; public class Test { public static void m
package javaapplication1;
import java.util.Scanner;
public class Test
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Enter three numbers:");
double a = input.nextDouble();
double b = input.nextDouble();
double c = input.nextDouble();
if (a > b)
{
double temp = a;
a = b;
b = temp;
}
if (b > c)
{
double temp = b;
b = c;
c = temp;
}
if (a > b)
{
double temp = a;
a = b;
b = temp;
}
double area = area(a, b, c);
boolean isValid = isValid(a, b, c);
String type = type(a, b, c);
if (isValid = true)
{
System.out.println("This triangle is " + type);
System.out.printf("The area is %.2f", area, "\n\n");
}
else
{
System.out.print("Invalid triangle");
}
}
public static boolean isValid(double a, double b, double c)
{
if (a + b > c)
{
return true;
}
else
{
return false;
}
}
public static double area(double a, double b, double c)
{
double s = (a + b + c)/2.0;
double area = Math.sqrt(s * (s - a) * (s - b) * (s - c));
return area;
}
public static String type(double a, double b, double c)
{
String type;
if (a == c)
{
type = "equilateral";
} else if (a == b || b == c)
{
type = "isosceles";
} else
{
type = "scalene";
}
return type;
}
}
问题似乎就在这里(除非是打字错误): 您正在将
true
赋值给isValid
,因此if
语句中的条件始终为true
比较基本值的正确方法是使用两个等号:
if (isValid == true)
然而,对于布尔人来说,这是多余的。测试布尔值是否为真/假的最佳方法是使用布尔变量本身:
if (isValid)
哪些输入工作不正常?另外,你可以说
return(a+b)>c代码>而不是重复你自己。如果我按12、6、5或相反的顺序做,两次都会出现“三角形是不等边的,面积是NaN”。就是这样!谢谢你接电话。我一直在这样看太久了,我怀疑我会很快看到它。再次感谢!没问题!只是想让您知道,在某些IDE中(我知道它至少适用于Eclipse),有一个选项可以为条件中可能的意外赋值打开编译器警告。这将有助于防止未来的错误
if (isValid)