如何从Java函数返回值?

时间:2016-12-28 14:40:54

标签: java return-value

我正在尝试使用以下程序:

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)之外,此程序中的所有内容都有效。无论出于何种原因,我都无法将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 - 哎呀!

3 个答案:

答案 0 :(得分:3)

您的returnTen()函数返回值,但您的代码未使用该值。要使用返回值,行:

returnTen(mystery, subend, result, success);

应该是:

success = returnTen(mystery, subend, result, success);

答案 1 :(得分:3)

问题不是return success;不起作用,而是 返回值<\ n> 。当您调用该函数时,您需要使用返回值:

    success = returnTen(mystery, subend, result, success);
//  ^^^^^^^^^^

答案 2 :(得分:-1)

为了使用函数返回值,必须将其赋值给变量或将其用作测试条件等。

if(returnTen(mystery, subend, result, success) > 0){
    System.out.println("returnTen returned an int value");
} 

目前,您的代码正在丢弃返回值,因为它没有分配给任何内容。