//----------三角形边长的判断---------------------
class SanJiao
{
//求最大值
static Double Max(Double a,Double b,Double c){
if (a>=b)
{
if (a>=c)
{
return a;
}
else if (a<c)
{
return c;
}
}
else{
if (b>=c)
{
return b;
}
else if (b<c)
{
return c;
}
}
}
//求最小值
static Double Min(Double a,Double b,Double c){
if (a<=b)
{
if (a<=c)
{
return a;
}
else if (a>c)
{
return c;
}
}
else{
if (b<=c)
{
return b;
}
else if (b>c)
{
return c;
}
}
}
public static void main(String[] args)
{
Double a=Double.parseDouble(args[0]);
Double b=Double.parseDouble(args[1]);
Double c=Double.parseDouble(args[2]);
if ((a>0)&&(b>0)&&(c>0))
{
Double max=Max(a,b,c);
Double min=Min(a,b,c);
Double mid=a+b+c-max-min;
if (((min+mid)>max)&&((max-mid)<min))
{
System.out.println("这三条线段可以组成一个三角形!");
}
else{
System.out.println("这三条线段不能组成一个三角形");
}
}
else{
System.out.println("三角形的边长不能为零或负值!");
}
}
}
这是我编的一个判断三个数是否可以组成一个三角形的程序,但是调试时总是报“缺少返回语句”错误,请各位帮忙查一下!
----------------解决方案--------------------------------------------------------
你的判断语句写的有问题。。。以求最小值为例:
if (a<=b)
{
if (a<=c)
{
return a;
}
else if (a>c)
{
return c;
}
}
斜体部分你不应当在出现if语句。如果此时(a < c)则不会return c(虽然从流程中看不会出现此类问题,上面的if(a <= c) 已经保证了a小于等于c,但是逻辑上不完备。故报错),应该为:
if (a<=b)
{
if (a<=c)
{
return a;
}
else {
return c;
}
}
else{
if (b<=c)
{
return b;
}
else {
return c;
}
}
你在传参数是Double,方法中应当使用Double.doubleValue()比较吧?
----------------解决方案--------------------------------------------------------
明白了,谢谢!!
----------------解决方案--------------------------------------------------------