Java 为什么传递一个返回变量但又有println的参数也会传递println?

Java 为什么传递一个返回变量但又有println的参数也会传递println?,java,parameters,Java,Parameters,当运行这个java程序时,我希望输出只是第一个println,因为其他方法quaffle和snitch只返回整数。但是,该程序的输出还包括quaffle和snitch方法的println。我希望println在后面的方法中是无用的,因为它们没有被返回。发生了什么事 输出: import acm.program.*; public class Hogwarts extends ConsoleProgram { public void run() { bludger(2001); }

当运行这个java程序时,我希望输出只是第一个println,因为其他方法quaffle和snitch只返回整数。但是,该程序的输出还包括quaffle和snitch方法的println。我希望println在后面的方法中是无用的,因为它们没有被返回。发生了什么事

输出:

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; 
 } 
} 
告密者:x=4004,y=1001
quaffle:x=2003,y=1,z=1001
游走者: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; 
 } 
} 

调用时,
println
会写入一行输出。您不需要对它返回的值执行任何操作。由于您调用了三次
println
,将得到三行输出。

我认为您对return语句的含义理解错误

“return”将指定的值返回到调用函数的位置。该函数可以自由地执行任何其他操作、将内容打印到终端、创建和删除文件或执行任何其他操作-这些操作不会因为没有从函数“返回”而“撤消”


这被称为。

否,
println
不在此处返回

此println针对以下执行流执行

call bludger
 -> call quaffle
    -> call snitch
       -> print "snitch" // snitch is printed first
    -> print "quaffle"   // later quaffle
 -> print "bludger"      // and now bludger
println()
与返回无关。调用
println()
时,它会立即写入输出,然后调用return。因此,即使返回函数,
println()
也已执行