我如何 return 来自 Java 函数的值?
How do I return a value from a Java function?
我正在尝试让以下程序运行:
public class funWithNumbers {
public static void main (String[] args) {
int ten = 10;
int subend = 7;
int result = ten - subend;
int success = 0;
int trials = 750;
for (int i=0; i<trials; i++) {
double randomNumber = Math.random();
randomNumber = randomNumber * 200;
randomNumber++;
int randNum = (int) randomNumber;
int mystery = randNum;
returnTen(mystery, subend, result, success);
}
int accuracy = (success / trials) * 100;
System.out.println("Trials Run: " + trials);
System.out.println("We can say that the number " + result + " indeed equals " + result + " with " + accuracy + "% accuracy.");
}
public static int returnTen(int mystery, int subend, int result, int success) {
int original = mystery;
mystery = mystery + mystery;
mystery = mystery * 5;
mystery = mystery / original;
mystery = mystery - subend;
if (mystery == result) {
success++;
}
return success;
}
}
除最后一条语句 (return success
) 外,此程序中的所有内容均有效。无论出于何种原因,我都无法将 return 来自 returnTen
函数的值返回到主程序。我尝试沿途使用 System.out.println()
语句(上面未包括)调试程序,并且在 returnTen
函数本身内,success
变量成功递增。但我无法将其传回主函数。
应该发生什么:您会注意到该函数基本上是一个常见的数字技巧。 mystery
的最终结果应该是 3(这就是结果)。因此,每次函数运行时,success
都应该递增。这意味着准确度应该是 100%,打印出来的语句应该是 We can say that the number 3 indeed equals 3 with 100% accuracy
发生了什么:结束语句当前打印 We can say that the number 3 indeed equals 3 with 0% accuracy
,这显然不是真的 - success
没有被传回,因此,准确度被计算为 0%。
编辑: 将 returnTen(mystery, subend, result, success);
更改为 success = returnTen(mystery, subend, result, success);
会将结束语句从 0% 更改为 25000%。
更新: 解决了问题 - success =
需要添加,我不得不将 success / result
更改为 success / trials
- 糟糕!
您的 returnTen() 函数在 return 值中,但您的代码未使用该值。要使用 return 值,行:
returnTen(mystery, subend, result, success);
应该是:
success = returnTen(mystery, subend, result, success);
问题不在于 return success;
不起作用(它起作用),而是您没有使用 return 值。调用该函数时,需要使用 return 值:
success = returnTen(mystery, subend, result, success);
// ^^^^^^^^^^
为了使用 return 函数中的值,您必须将其分配给变量或将其用作测试条件等。
if(returnTen(mystery, subend, result, success) > 0){
System.out.println("returnTen returned an int value");
}
目前您的代码正在丢弃 return 值,因为它没有分配给任何东西。
我正在尝试让以下程序运行:
public class funWithNumbers {
public static void main (String[] args) {
int ten = 10;
int subend = 7;
int result = ten - subend;
int success = 0;
int trials = 750;
for (int i=0; i<trials; i++) {
double randomNumber = Math.random();
randomNumber = randomNumber * 200;
randomNumber++;
int randNum = (int) randomNumber;
int mystery = randNum;
returnTen(mystery, subend, result, success);
}
int accuracy = (success / trials) * 100;
System.out.println("Trials Run: " + trials);
System.out.println("We can say that the number " + result + " indeed equals " + result + " with " + accuracy + "% accuracy.");
}
public static int returnTen(int mystery, int subend, int result, int success) {
int original = mystery;
mystery = mystery + mystery;
mystery = mystery * 5;
mystery = mystery / original;
mystery = mystery - subend;
if (mystery == result) {
success++;
}
return success;
}
}
除最后一条语句 (return success
) 外,此程序中的所有内容均有效。无论出于何种原因,我都无法将 return 来自 returnTen
函数的值返回到主程序。我尝试沿途使用 System.out.println()
语句(上面未包括)调试程序,并且在 returnTen
函数本身内,success
变量成功递增。但我无法将其传回主函数。
应该发生什么:您会注意到该函数基本上是一个常见的数字技巧。 mystery
的最终结果应该是 3(这就是结果)。因此,每次函数运行时,success
都应该递增。这意味着准确度应该是 100%,打印出来的语句应该是 We can say that the number 3 indeed equals 3 with 100% accuracy
发生了什么:结束语句当前打印 We can say that the number 3 indeed equals 3 with 0% accuracy
,这显然不是真的 - success
没有被传回,因此,准确度被计算为 0%。
编辑: 将 returnTen(mystery, subend, result, success);
更改为 success = returnTen(mystery, subend, result, success);
会将结束语句从 0% 更改为 25000%。
更新: 解决了问题 - success =
需要添加,我不得不将 success / result
更改为 success / trials
- 糟糕!
您的 returnTen() 函数在 return 值中,但您的代码未使用该值。要使用 return 值,行:
returnTen(mystery, subend, result, success);
应该是:
success = returnTen(mystery, subend, result, success);
问题不在于 return success;
不起作用(它起作用),而是您没有使用 return 值。调用该函数时,需要使用 return 值:
success = returnTen(mystery, subend, result, success);
// ^^^^^^^^^^
为了使用 return 函数中的值,您必须将其分配给变量或将其用作测试条件等。
if(returnTen(mystery, subend, result, success) > 0){
System.out.println("returnTen returned an int value");
}
目前您的代码正在丢弃 return 值,因为它没有分配给任何东西。