Java 调用其他方法时返回语句不起作用
我最近开始试验return语句,对此我有一个小小的疑问——当我有一个方法调用另一个方法时,会显示我调用的那个方法的return语句吗 让我们举一个例子,让它更清楚-Java 调用其他方法时返回语句不起作用,java,return,bluej,method-call,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)
/** 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语句将不显示
那么,这只是我面临的一个问题,还是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.
}
}
return语句只返回值,不显示它 如果没有捕获返回值,如何显示它?添加类似这样的内容并尝试 , 请尝试学习一些好的命名约定,类是这样命名的,
第二,TestException(每个单词以大写字母开头)等,方法以小写字母开头,isPrime(),isEven(),在方法体中,使用
返回语句返回值。它不会自己打印任何内容
更改完成-System.out.println(evenorod5)代码>
输出
The output is false.
false
首先将主签名从main(inta)
更改为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));
您从未实际显示该方法的返回结果
方法的名称是consumingEvenOrOdd
返回true
或false
含糊不清,mayisEven
会更好
你可以试试像
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;
}
许多其他响应程序不知道的是,当您在BlueJ中运行一个方法时,它会执行该方法,如果该方法的返回值为非void,则会通过调用toString在弹出对话框中显示。这就是提问者所说的显示值的意思
用户最初问题的答案是,通过使用void返回包围方法,它“隐藏”了结果。所以这个代码:
public void callMe1(int a)
{
EvenOrOdd(a);
}
将不显示报税表。但如果调整返回类型并实际返回内部调用的值:
public int callMe2(int a)
{
return EvenOrOdd(a);
}
然后BlueJ将显示返回的值。显示方面取决于BlueJ,但返回值与否的规则与Java中的相同;void意味着不返回。我看不到任何应该显示的地方…@Eran这是BlueJ,允许您接受希望作为主方法输入的任何数据类型。似乎您缺少一个System.out.println
。添加此语句System.out.println(EvenOrOdd(a))代码>以显示返回的function@JackSullyBlueJ在学习编程基础时是一个有用的工具,它有助于将复杂的语法推迟到以后,即使没有诸如System.out.println(“”)之类的终端I/O,也可以检查返回值,但我不确定它是如何完成的,我建议你要么遵循这种学习方式,要么遵循传统的学习方式,即在忽略任何你不理解的关键字的时候,尽早让自己接触语法,这样键入,稍后当你在学习了基础知识之后来到这一部分时,你可以探索…@DroidIcs Hmmm…你是对的,我想我必须耐心等待。谢谢…不,不,不要做递归。很好的建议,但不是op编程的方式。我从来没有说过任何关于递归的内容……您只需要不修改EvenOrOdd
方法(根据您的原始答案),只需显示该方法的结果……您的程序产生输出了吗?仅供参考:“这是BlueJ,允许您接受任何希望作为主方法输入的数据类型”是的,我也从未使用过它:P
public void callMe1(int a)
{
EvenOrOdd(a);
}
public int callMe2(int a)
{
return EvenOrOdd(a);
}