Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,将一个方法作为另一个方法的参数传递是一种不好的做法吗?_Java - Fatal编程技术网

在Java中,将一个方法作为另一个方法的参数传递是一种不好的做法吗?

在Java中,将一个方法作为另一个方法的参数传递是一种不好的做法吗?,java,Java,我正在学习Java中的方法,很想知道将一个方法作为参数传递给另一个方法是否是一种糟糕的做法。虽然我知道有很多方法可以实现相同的解决方案,但有时用一种方法编写的代码比其他方法更有效 例如,在代码练习中,要求它创建一个具有两个参数sname和position的方法 并使用一个parameterscore创建第二个方法。然后调用这两种方法,并使用以下分数数据1500、900、400、50显示结果 我的解决方案是这样写的: public class Main { public stat

我正在学习Java中的方法,很想知道将一个方法作为参数传递给另一个方法是否是一种糟糕的做法。虽然我知道有很多方法可以实现相同的解决方案,但有时用一种方法编写的代码比其他方法更有效

例如,在代码练习中,要求它创建一个具有两个参数sname和position的方法 并使用一个parameterscore创建第二个方法。然后调用这两种方法,并使用以下分数数据1500、900、400、50显示结果

我的解决方案是这样写的:

    public class Main {

    public static void main(String[] args) {
    displayHighScorePosition("Fred",calculateHighScorePosition(1500));
    displayHighScorePosition("Ted", calculateHighScorePosition(900));
    displayHighScorePosition("Jen", calculateHighScorePosition(400));
    displayHighScorePosition("John",calculateHighScorePosition(50));
    }
    public static void displayHighScorePosition(String name, int highScorePosition) {
        System.out.println(name + " managed to get into position " + highScorePosition + " on the high score table");
    }
    public static int calculateHighScorePosition(int score) {
        int position = 4;
        if(score >= 1000) {
            position = 1;
        } else if (score >= 500) {
            position = 2;
        } else if (score >= 100) {
            position = 3;
        }
        return position;
    }
}
这显示了与练习预期相同的输出,但练习中编写的代码是错误的

public class Main {

    public static void main(String[] args) {
    int highScorePosition = calculateHighScorePosition(1500);
    displayHighScorePosition("Fred", highScorePosition);

    int highScorePosition = calculateHighScorePosition(900);
    displayHighScorePosition("Ted", highScorePosition);

    int highScorePosition = calculateHighScorePosition(400);
    displayHighScorePosition("Jen", highScorePosition);

    int highScorePosition = calculateHighScorePosition(50);
    displayHighScorePosition("John", highScorePosition);

    }
    public static void displayHighScorePosition(String name, int highScorePosition) {
        System.out.println(name + " managed to get into position " + highScorePosition + " on the high score table");
    }
    public static int calculateHighScorePosition(int score) {
        int position = 4;
        if(score >= 1000) {
            position = 1;
        } else if (score >= 500) {
            position = 2;
        } else if (score >= 100) {
            position = 3;
        }
        return position;
    }
}

这有区别吗?i、 e.是一种更好的编写方法,还是当代码变得更复杂时,我会遇到问题?

您不是将另一个方法作为参数传递,而是将方法的返回值作为参数传递,这是一个完全不同的概念

无论如何,第二个例子除了在语法上是错误的,因为你一直在重新声明一个变量,而不是仅仅给它重新赋值,在这种情况下,它只是更加冗长,没有明显的好处


如果您随后在方法的其他地方使用这些声明变量中的任何一个都是有意义的。

您不是将另一个方法作为参数传递,而是将一个方法的返回值作为参数传递,这是一个完全不同的概念

无论如何,第二个例子除了在语法上是错误的,因为你一直在重新声明一个变量,而不是仅仅给它重新赋值,在这种情况下,它只是更加冗长,没有明显的好处


如果您随后在方法的其他地方使用这些声明的变量中的任何一个都是有意义的。

您的代码可能可以工作,在练习中编写的代码甚至不会编译。所以,是的,这是有区别的。你的代码可能可以工作,在练习中编写的代码甚至不能编译。好吧,我现在明白了,谢谢你的解释。非常感谢你。我现在明白了,感谢你的解释。非常感谢你