此代码
func runOnRenderAnimations() -> Void {
perform(#selector(animateIntroViews), with: NSNumber(value: 0), afterDelay: 0.5)
perform(#selector(animateIntroViews), with: NSNumber(value: 1), afterDelay: 2.5)
}
@objc fileprivate func animateIntroViews(textPosition: NSNumber) -> Void {
print(textPosition.intValue)
}
工作正常,但是这个
int a = 6;
System.out.print("The result is " + a*a);
产生一个异常:
线程“ main”中的异常java.lang.RuntimeException:无法编译 源代码-错误的树类型:at pkg1.pkg4.take.input.TakingInput.main(TakingInput.java:11)
为什么呢?
当我试图一次打印几个按位运算的结果时,便出现了问题,就像这样:
int a = 6;
System.out.print("The result is " + a^a);
我查找了System.out.print(a&b + "\n" + a|b + "\n" + a^b);
方法的说明以及按位运算符的几个主题,并在SO上打印到控制台上,包括在撰写问题时的推荐主题,但是找不到答案。
答案 0 :(得分:22)
这是因为+
的{{3}}比^
高,因此可以编译为:
("The result is " + a) ^ a
显然不起作用。在其周围加上括号:
System.out.print("The result is " + (a^a));
或者如Holger所述,您可以使用printf
来解决此问题:
System.out.printf("The result is %d", a^a);