我有以下代码产生此输出( -1 后没有空格)==> "1 3 -14 -15 -1"
int [] arr = {1, 3, Integer.MAX_VALUE, 4, Integer.MAX_VALUE, 5, Integer.MAX_VALUE};
for (int dist : arr) {
System.out.print((dist == Integer.MAX_VALUE) ? -1 : dist + " ");
}
但如果我单独评估三元表达式(如下所示),它会给出不同的输出(我所期望的)==> "1 3 -1 4 -1 5 -1"
int [] arr = {1, 3, Integer.MAX_VALUE, 4, Integer.MAX_VALUE, 5, Integer.MAX_VALUE};
for (int dist : arr) {
int finalDist = (dist == Integer.MAX_VALUE) ? -1 : dist;
System.out.print(finalDist + " ");
}
第一个代码段出了什么问题?
答案 0 :(得分:4)
下面
(dist == Integer.MAX_VALUE) ? -1 : dist + " "
仅当条件为false
时才会添加空格。您应该使用parantheses随时添加" "
,如下所示。
((dist == Integer.MAX_VALUE) ? -1 : dist) + " "
三元运算符只有运算符优先于赋值运算符。 (见下文)
下表列出了运算符 优先顺序。操作员离桌子越近 出现,其优先级越高。
答案 1 :(得分:0)
您的括号只是一个简单的问题。试试这个:
@WebServlet(displayName="JPA Servlet", urlPatterns="/JPAServlet")
public class JPAServlet extends HttpServlet {
// ...
}
答案 2 :(得分:-1)
您错过了将操作放在圆括号内的原因,所以它的行为很奇怪,请使用下面的代码,
try{
throw new ArithmeticException("Exception Testing...");
}catch(Exception e){
String msg = "First Statement : " + (e.getCause() != null ? e.getMessage() : null);
System.out.println(msg);
}
如果您需要任何其他帮助或解释。请让我知道。