java两个return_关于java:调用另一个方法时return语句不起作用

我最近开始尝试使用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

}

}

}

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

所以这只是我面临的问题,还是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.

}

}

我看不到它应该显示的任何地方...

@Eran这是BlueJ,允许您接受希望作为主方法中的输入的任何数据类型。

好像您缺少System.out.println。添加此语句System.out.println(EvenOrOdd(a));以显示函数的返回

@JackSully BlueJ是学习编程基础的一种有用工具,它有助于推迟以后的复杂语法,即使没有终端I / O也可以检查返回值,例如System.out.println("),不确定如何完成后,我建议您采用这种学习方式或常规方式,即在忽略任何您不理解的关键字时尽早暴露自己的语法,以这种方式键入,然后在学习完该部分之后再进入该部分。您可以探索的基础知识...

@DroidIcs嗯...你是对的,我想我一定要有耐心。谢谢...

您必须了解,BlueJ只是通过尽早隐藏某些细节来帮助学习的工具,通常在通常情况下,main只能是public static void main(String [] args),并且返回x是什么; statement的意思是将x还给调用者,例如x=method(); int method(){int y=5;return y;},x仅分配给y,没有代码显示它,因此您应该放置System.out.println(x)或System.out之类的语句.println(method()); ..希望为您清除它

@DroidIcs是的,非常感谢!

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(),

不@MadProgrammer,不。 不要做递归。 很好的建议,但不是操作员编程的方式。

我从没说过关于递归的任何事情...您只需要修改EvenOrOdd方法(来自原始答案),只需显示该方法的结果...

您的程序产生输出了吗?

许多其他响应者不知道的是,当您在BlueJ中运行一个方法时,它会执行该方法,并且如果该方法的返回值不是非无效的,则通过调用toString在弹出对话框中显示该方法。这就是发问者通过显示值来表示的意思。

用户最初问题的答案是,通过用无效返回值包围该方法,它"隐藏"了结果。所以这段代码:

public void callMe1(int a)

{

EvenOrOdd(a);

}

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

public int callMe2(int a)

{

return EvenOrOdd(a);

}

然后,BlueJ将显示返回的值。显示方面取决于BlueJ,但是是否返回值的规则与Java中的规则相同。空意味着没有回报。

您从不实际显示方法的返回结果...

该方法的名称消耗了EvenOrOdd返回true或false是模棱两可的,也许isEven会更好...

您可以尝试类似...

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;

}

首先将您的主签名从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));

仅供参考:"这是BlueJ,它允许您接受希望作为主方法输入的任何数据类型"

是的,我也从未用过它:P

在方法的正文中,使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值