请帮助我如何在 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/