有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java缺失返回语句生成三角形程序

public String displayType(int side1, int side2,int side3)
    {
        if(( side1+side2 > side3))

            if(( side1==side2) && (side2==side3))//tell if equalateral
            {
                return ("Equalateral Triangle.");
            }
            else if (( side1==side2) & (side2 != side3) || (side1 == side3) & (side3 != side1))//tells if isosceles
            {
                return ("Isosceles Triangle.");
            }
            else if ((side1 != side2) & (side2 != side3))//tells if scalene
            {
                return ("Scalene Triangle.");        

        }
    } // missing return statement here error

我正在制作一个确定三角形的程序。这就是我编译这个时出错的地方。它在最后给出了一个缺少的return语句。你将如何解决这个问题


共 (4) 个答案

  1. # 1 楼答案

    编译器的意思是你必须返回一些东西,因为如果你所有的if条件都失败了,那么它会做什么呢

    你可以这样做:

    public String displayType(int side1, int side2,int side3)
    {
        if(( side1+side2 > side3))
    
            {
    if(( side1==side2) && (side2==side3))//tell if equalateral
            {
                return ("Equalateral Triangle.");
            }
            else if (( side1==side2) & (side2 != side3) || (side1 == side3) & (side3 != side1))//tells if isosceles
            {
                return ("Isosceles Triangle.");
            }
            else if ((side1 != side2) & (side2 != side3))//tells if scalene
            {
                return ("Scalene Triangle.");        
    
        }
    return ("It is not a triangle");
    } // missing return statement here error
    
  2. # 2 楼答案

    因为最终的逻辑(在你的例子中)总是正确的,所以你不需要最终的else if

    简单地

    return ("Scalene Triangle."); 
    

    但如果下面的假设为假,会发生什么

    if(( side1+side2 > side3))
    

    你需要归还一些东西

  3. # 3 楼答案

    原因是,你所有的条件都没有执行会发生什么

    可能的解决方案:

    • 你需要在那里设置一个else街区。当你提供一个其他的 块,那么它肯定总是有机会返回 值,在ifelse

    • 不考虑if-else的默认返回语句,其中 返回值应以块为单位确定

  4. # 4 楼答案

    试试这个

    public String displayType(int side1, int side2,int side3)
    {
        if(( side1+side2 > side3)){
    
            if(( side1==side2) && (side2==side3))//tell if equalateral
            {
                return "Equalateral Triangle.";
            }
            else if (( side1==side2) & (side2 != side3) || (side1 == side3) & (side3 != side1))//tells if isosceles
            {
                return "Isosceles Triangle.";
            }
            else if ((side1 != side2) & (side2 != side3))//tells if scalene
            {
                return "Scalene Triangle.";        
    
            }
                            }
      else{
         return "Not a triangle";
          }
      }