这段代码有什么问题,应该在任何地方都有回报。请帮助,我非常沮丧

时间:2019-04-26 10:25:38

标签: java

  class Number  {

  int number;
  int triangularNumber=1;

   public boolean istriangularNumber() {



    while(number<triangularNumber)
       {
       triangularNumber=triangularNumber+1;  }

    if ( number<triangularNumber)  {
    return false;  }

    else if( number>triangularNumber)  {
    return false;  }

    if ( number==triangularNumber) {

    return true;}

   }

    }   



     Number typed= new Number();

     typed.number= 3;





    System.out.println(typed.istriangularNumber());
  }
}

错误:

  

第29行:缺少返回语句

代码应告诉您是否输入了密码。是否为三角形。

4 个答案:

答案 0 :(得分:4)

实际上不是。

您只涵盖了您正在检查的情况。 但是,如果您的条件都不满足,将会有什么反应?

这就是为什么您收到给定第29行错误的原因。 如果没有满足您的条件,则需要为默认情况提供return语句。

答案 1 :(得分:2)

您的函数说(有一些重新格式化)

boolean istriangularNumber() {
    while(number<triangularNumber)
    {
        triangularNumber=triangularNumber+1;
    }

    if ( number<triangularNumber)  {
        return false;
    }

    else if( number>triangularNumber) {
        return false;
    }

    if ( number==triangularNumber) {
        return true;
    }

}

它有一个if,这意味着似乎有一种方法可以在没有返回语句的情况下到达函数的结尾。

删除最后一个if并在那时返回true将解决此问题。 从逻辑上讲,您已经介绍了三种可能的情况,但是编译器无法告诉您。


考虑到弹出的评论,只是作一些观察。

查看您的代码:

循环中

while(number<triangularNumber)

您一直将triangularNumber增大,直到不再适用。

然后您检查

if ( number<triangularNumber)  

这不会发生,因为您将停留在while循环中,直到您number不再小于提到的triangularNumber。 因此,我们不需要这种情况。我们可以看看这个数字是否实际上是一个三角形数字:

boolean istriangularNumber() {
    while(number<triangularNumber)
    {
        triangularNumber=triangularNumber+1;
    }

    return number==triangularNumber; 
 }

您的意思是否小于?还是您真的要尝试从1开始增加三角形数字,直到达到该数字或超调为止?即

    while(number>triangularNumber)
    {
        triangularNumber=triangularNumber+1;
    }

一个奖励问题:你是真的意思

triangularNumber=triangularNumber+1;

在您的循环中?您从1开始,然后将其设置为1 + 1,即2,然后将2 + 1设置为3,然后将3 + 1设置为4。

你是这个意思吗?

triangularNumber += triangularNumber+1;

答案 2 :(得分:-1)

public class HelloWorld {
  public static void main(String[] args) {
      class Number  {
        int number;
        int triangularNumber=1;
        public boolean istriangularNumber() {
            while(number<triangularNumber){
               triangularNumber=triangularNumber+1;
            }

            if ( number<triangularNumber)  {
                return false;
            }

            else if( number>triangularNumber)  {
                return false;  
            }

            return true;
        }
    }   
     Number typed= new Number();
     typed.number= 3;
     System.out.println(typed.istriangularNumber());
  }

尝试一下。并且请正确格式化您的代码,使其易于阅读。

答案 3 :(得分:-2)

public class HelloWorld {
public static void main(String[] args) {

    class Number {

        int number;
        int triangularNumber = 1;

        public boolean istriangularNumber() {

            while (number < triangularNumber) {
                triangularNumber = triangularNumber + 1;
            }

            if (number < triangularNumber) {
                return false;
            } else if (number > triangularNumber) {
                return false;
            }else {

                return true;
            }
        }
    }

    Number typed = new Number();
    typed.number = 3;
    System.out.println(typed.istriangularNumber());
}

}

您自己的逻辑是正确的,但是写作存在问题。