代码1返回1。
代码 2 返回 49。
他们不应该返回相同的结果吗?
public class MyClass {
public static void main(String args[]) {
String code = "1";
StringBuilder digitSB = new StringBuilder();
for(int i = 0; i < code.length(); i++){
char chr = code.charAt(i);
//Code 1
if(Character.isDigit(chr)){
digitSB.append(chr);
}
else{
digitSB.append(Character.getNumericValue(chr));
}
System.out.println("Code 1 result: " + digitSB);
//Code 2
digitSB = new StringBuilder();
digitSB.append(Character.isDigit(chr) ? chr : Character.getNumericValue(chr));
System.out.println("Code 2 result: " + digitSB);
}
}
}
请注意,49是1的ASCII码。
编辑:就像@matt在评论里说的那样。使用三元运算符时,“:”的两边被视为同一类型。由于getNumericValue假设它是一个int,两边都是int。条件为真,所以取左边,是chr,但认为是int。
在三元运算符的情况下,返回类型被视为int。像这样使用
Character.isDigit(chr) ? chr : ""+ Character.getNumericValue(chr);
或
Character.isDigit(chr) ? ""+chr : Character.getNumericValue(chr);
问题内容: 尝试执行以下操作: 我收到此错误: 无法确定条件表达式的类型,因为“ System.DBNull”和“ System.DateTime”之间没有隐式转换 我显然理解该错误,但是考虑到Parameters.Value是object类型,为什么类型甚至很重要?有没有办法完成我想做的事情? 问题答案: 返回值进入的值并没有什么区别,因为 必须首先确定返回值的类型 。 这两个值(投一个,)其他
相当新的反应,我相信这很容易,但我正在尝试转换: 转换成单个返回语句。 基本上是替换
我试过: 如果条件行出现以下错误: 也有类似的问题,但我的错误是“如果”条件。我如何用“bc”或“dc”来修复它?
问题内容: 我有一个由以下映射的关联: 我想使用Criteria API返回所有包含一个或多个带有attribute实体的实体的列表。我不希望映射集合被查询过滤。 例如,给出以下内容: 该查询应返回以下内容: 到目前为止,我正在使用以下条件查询: 然而,它返回的等价于 即,它为每个子元素返回一个父记录(填充了子集合) 有谁知道在这种情况下如何仅返回唯一的父元素? 意见表示赞赏,p。 问题答案: 您
我正在开发一个返回算术表达式的程序,其中包括运算符和整数。我为其实现的代码如下: 这段代码的问题是它返回运算符,但表达式中的所有运算符都是相同的:例如:我得到一个表达式9 2 3 4 5=?我不想让它全部包含,它可以是一个表达式中的许多随机运算符。任何帮助都将不胜感激。谢谢
问题内容: 我对条件运算符有些疑惑。考虑以下两行: 为什么f1变为null且第二条语句引发NullPointerException? Langspec-3.0第15.25段说: 否则,第二和第三操作数分别为S1和S2类型。令T1为对S1进行装箱转换所产生的类型,而T2为对S2进行装箱转换所产生的类型。条件表达式的类型是将捕获转换(§5.1.10)应用于lub(T1,T2)(§15.12.2.7)的