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