当运行这个java程序时,我希望输出只是第一个println,因为其他方法,quaffle和snitch只返回整数。但是,该程序的输出还包括quaffle和snitch方法的println。我希望println在后一种方法中没用,因为它们没有返回。发生了什么?
输出:
告密:x = 4004,y = 1001
quaffle:x = 2003,y = 1,z = 1001
bludger:x = 1001,y = 2001,z = 2003
该计划:
import acm.program.*;
public class Hogwarts extends ConsoleProgram {
public void run() {
bludger(2001);
}
private void bludger(int y) {
int x = y / 1000;
int z = (x + y);
x = quaffle(z, y);
println("bludger: x = " + x + ", y = " + y + ", z = " + z);
}
private int quaffle(int x, int y) {
int z = snitch(x + y, y);
y /= z;
println("quaffle: x = " + x + ", y = " + y + ", z = " + z);
return z;
}
private int snitch(int x, int y) {
y = x / (x % 10);
println("snitch: x = " + x + ", y = " + y);
return y;
}
}
答案 0 :(得分:3)
println
在调用时写入一行输出。您无需对其返回的值执行任何操作。由于您调用了println
三次,因此您将获得三行输出。
答案 1 :(得分:3)
我认为你对return语句的含义有误解。
'return'将指定的值返回到调用函数的位置。该函数可以自由执行任何其他操作,将内容打印到终端,创建和删除文件或执行任何其他操作 - 这些操作不会因为它们未从函数“返回”而“撤消”。
答案 2 :(得分:0)
不,这里不会返回println
。
执行此println以执行以下操作。
call bludger
-> call quaffle
-> call snitch
-> print "snitch" // snitch is printed first
-> print "quaffle" // later quaffle
-> print "bludger" // and now bludger
答案 3 :(得分:0)
println()
与回归无关。调用println()
时,它立即写入输出,然后调用return。因此,即使返回该函数,也已执行println()
。