Java 是否有方法获取传递给方法调用的值?

Java 是否有方法获取传递给方法调用的值?,java,methods,Java,Methods,我想知道当我把一个值传递给一个方法调用时。有没有办法直接从方法调用中获取值 int playerPosition = calculateHighScorePosition(1500); //<-- Is there a way to grab this passed value? displayHighScorePosition("Perseus", playerPosition, 1500);//<-- Instead of hardcoding it in? i

我想知道当我把一个值传递给一个方法调用时。有没有办法直接从方法调用中获取值

int playerPosition = calculateHighScorePosition(1500); //<-- Is there a way to grab this passed value?
        displayHighScorePosition("Perseus", playerPosition, 1500);//<-- Instead of hardcoding it in?

int playerPosition=calculateHighScorePosition(1500)// 您可以通过将其分配给一个变量并将其传递给这两个方法来实现

int perseusPos = 1500;
int playerPosition = calculateHighScorePosition(perseusPos);
displayHighScorePosition("Perseus", playerPosition, perseusPos);

这是一个很好的机会,一个面包和黄油重构技术

private static void calculateAndDisplayHighScorePosition(String name, int highScore) {
    int playerPosition = calculateHighScorePosition(highScore);
    displayHighScorePosition(name, playerPosition, highScore);
}
(你可能会想出一个更好、更短的名字。)

这消除了
main()
中的重复逻辑:

您可以通过在并行数组中保存阈值分数来进一步减少重复:

String[] names = {"Perseus", "Achilles", "Hercules", "Leonidas"};
int[] scores = {1500, 900, 400, 50};

for (int i = 0; i < names.length && i < scores.length; i++) {
    calculateAndDisplayHighScorePosition(names[i], scores[i]);
}
String[]name={“珀尔修斯”、“阿喀琉斯”、“赫拉克勒斯”、“列奥尼达斯”};
int[]得分={150090040050};
对于(int i=0;i
抓取是什么意思?你能在调用之前给变量赋值并在调用之后使用变量吗?我想减少需要的变量数量。所以我想知道,既然calculateHighScorePosition已经有了这个值,我是否可以通过某种方式将它传递给displayHighScorePosition。您可以编写一个函数,对
calculateHighScorePosition
进行两次调用,然后
displayHighScorePosition
,然后调用它。
calculateAndDisplayHighScorePosition("Perseus", 1500);
calculateAndDisplayHighScorePosition("Achilles", 900);
calculateAndDisplayHighScorePosition("Hercules", 400);
calculateAndDisplayHighScorePosition("Leonidas", 50);
String[] names = {"Perseus", "Achilles", "Hercules", "Leonidas"};
int[] scores = {1500, 900, 400, 50};

for (int i = 0; i < names.length && i < scores.length; i++) {
    calculateAndDisplayHighScorePosition(names[i], scores[i]);
}