我最近开始尝试使用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.
}
}
答案 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)
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;
}
答案 4 :(得分:0)
许多其他响应者不知道的是,当您在BlueJ中运行方法时,它会执行该方法,如果该方法的返回值为非void,则会在弹出对话框中显示调用toString。这就是提问者所显示的价值所意味着的。
用户原始问题的答案是,通过使用void返回来包围方法,它会“隐藏”结果。所以这段代码:
public void callMe1(int a)
{
EvenOrOdd(a);
}
不会显示退货。但是如果你调整返回类型并实际返回内部调用的值:
public int callMe2(int a)
{
return EvenOrOdd(a);
}
然后BlueJ将显示返回的值。显示方面是BlueJ,但是返回值的规则与Java相同;无效意味着没有回报。