调用另一个方法时返回语句不起作用

时间:2014-10-22 06:15:55

标签: java return bluej method-call

我最近开始尝试使用return语句,我对它有一点疑问 - 当我有一个调用另一个方法的方法时,是否会显示我调用的那个方法的return语句?

让我们举一个例子,让它更清晰 -

/** Program to test return statment */

public class Test
{
   public static void main(int a)
   {
      EvenOrOdd(a);
   }
   private static boolean EvenOrOdd(int a)
   {//I can declare as public and run directly but then what is the point in calling     the method?
      if(a%2==0) 
      {
        System.out.println("The output is true.");//Displays
        return true;//Does not display(As in that window does not pop up with the result.)
      }
      else
      {
        System.out.println("The output is false.");//Displays  
        return false;//Does not display
      }

   }
}

如果我只是删除main方法(或者甚至将第二个方法公开并直接运行),则会显示我的return语句,但是如果我尝试调用该方法并运行该程序,则我的return语句不是' t显示。

这只是我面临的一个问题,还是Java中的一般规则,当你调用另一个方法(有一个return语句)时,return语句不起作用?

如果是后者,那么我道歉,我不知道这一点。

...谢谢

                               ***UPDATE***

似乎没有人理解我的意思。我将举一个例子 -

请运行此程序 - :

/** Program to test Return statment;simple program to return sum of two digits */

public class Return_Test
{
   public static int main(int a,int b)
   {
    return a+b;//What I am lloking for is that box in which this is displayed.
   }
}

5 个答案:

答案 0 :(得分:1)

return语句仅返回值,不显示 如果你没有捕获返回值,它怎么显示?添加这样的东西,然后尝试 ,

public class Test
{
   public static void main(int a)
   {
    boolean temp=EvenOrOdd(a);
    if(temp)
    System.out.println("Output is True");
    else
    System.out.println("Output False(not even )");
    //Or you can directly call the method as' System.out.println(EvenOrOdd));'

   }
   private static boolean EvenOrOdd(int a)
   {//I can declare as public and run directly but then what is the point in calling     the method?
      if(a%2==0) 
      {
        System.out.println("The output is true.");//Displays
        return true;//Does not display
      }
      else
      {
        System.out.println("The output is false.");//Displays  
        return false;//Does not display
      }

   }
}

请尝试学习一些好的命名约定,类命名如下, FirstSecond,TestException(每个单词以大写字母开头)等,方法以小写字母开头,isPrime(),isEven(),

答案 1 :(得分:0)

在方法正文中,您使用return statement to return the value。它不会自行打印任何东西。

完成的更改 - System.out.println(EvenOrOdd(5));

public class Test {

    public static void main(String[] args) {
        System.out.println(EvenOrOdd(5));
    }

    private static boolean EvenOrOdd(int a) {// I can declare as public and run directly but then what is the point in
                                             // calling the method?
        if (a % 2 == 0) {
            System.out.println("The output is true.");// Displays
            return true;// Does not display
        } else {
            System.out.println("The output is false.");// Displays
            return false;// Does not display
        }

    }

}

<强>输出

The output is false.
false

答案 2 :(得分:0)

首先将您的主要签名从main(int a)更改为main(String [] args),否则您将获得以下运行时异常:

Error: Main method not found in class yourpackagename.Test, please define the main method as:
   public static void main(String[] args)

你没有打印函数的返回值:

main执行此操作:

System.out.println(EvenOrOdd(5));

答案 3 :(得分:0)

  1. 您实际上从未显示方法的返回结果......
  2. 该方法的名称正在消耗EvenOrOdd返回truefalse是暧昧的,可能isEven会更好......
  3. 您可以尝试类似......

    System.out.println(a + " is even = " + EvenOrOdd(a));
    

    您还应该避免在单个方法中使用多个return语句,它可能会很快混淆方法实际如何工作,在您的情况下,您可以同时降低过度复杂性,例如...

    private static boolean isEven(int a)
    {
    
        boolean isEven = false;
        if(a%2==0) 
        {
            System.out.println("The output is true.");//Displays
            isEven = true;//Does not display
        }
    
        return isEven;
    
    }
    

答案 4 :(得分:0)

许多其他响应者不知道的是,当您在BlueJ中运行方法时,它会执行该方法,如果该方法的返回值为非void,则会在弹出对话框中显示调用toString。这就是提问者所显示的价值所意味着的。

用户原始问题的答案是,通过使用void返回来包围方法,它会“隐藏”结果。所以这段代码:

public void callMe1(int a)
{
    EvenOrOdd(a);
}

不会显示退货。但是如果你调整返回类型并实际返回内部调用的值:

public int callMe2(int a)
{
    return EvenOrOdd(a);
}

然后BlueJ将显示返回的值。显示方面是BlueJ,但是返回值的规则与Java相同;无效意味着没有回报。