gpt4 book ai didi

java - 如何在不先运行代码的情况下将代码传递给方法?

转载 作者:行者123 更新时间:2023-11-29 04:32:48 25 4
gpt4 key购买 nike

请帮助我如何在 java 中实现以下内容。

public class TestUserFunctions {

public static boolean equals(int val1, int val2){
if(val1==val2){
return true;
} else{
return false;
}
}
public static Object iterateValue(String ittr, int iterations){
for(int i=1; i <= iterations; i++){
System.out.println("Printing iteration #"+i);
}
return ittr;
}

private static void ifElse(boolean condition, Object returnstr, Object elsestr){
if(condition){
System.out.println("TRUE");
//Need a code here which will iterate string value only once.
} else{
System.out.println("FALSE");
//Need a code here which will iterate string value thrice as specified.
}
}

public static void main(String[] args){
ifElse(equals(1, 1), iterateValue("Value", 1), iterateValue("Value", 3));
}
}

我上面的代码在很多方面可能是错误的。我为此感到抱歉。这里的预期输出是

TRUE
Printing iteration #1

如果是 ifElse(equals(1, 1), iterateValue("Value", 1), iterateValue("Value", 3)); 预期输出是

FALSE
Printing iteration #1
Printing iteration #2
Printing iteration #3

最佳答案

重点是:

ifElse(equals(1, 1), iterateValue("Value", 1), iterateValue("Value", 3));

在 Java 中,所有方法参数都会在调用发生之前得到评估(也称为计算)。

换句话说:

  • equals(1,1) 总是结果为真
  • 因此总是返回第一个“值”(尽管这并不重要;因为您在两种情况下都使用相同的值)
  • 如前所述,将执行对iterateValue()两个 调用;这意味着此方法被调用两次,每次调用都有各自的参数。

因此,如果您只想调用一次 iterateValue();您应该将它用作参数。取而代之的是:

ifElse(equals(1,1), "ValueA", "ValueB"));

然后直接在第一个或第二个传入的字符串参数上调用iterateValue();而且只有一次。

关于java - 如何在不先运行代码的情况下将代码传递给方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43117715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com