Java 使用三元运算符将字符串转换为整数

Java 使用三元运算符将字符串转换为整数,java,syntax,ternary-operator,Java,Syntax,Ternary Operator,我有一个字符串,我想在将其存储为对象的属性之前将其转换为整数。虽然我可以使用常规的if语句,但我想使用三元运算来建立对它的理解。这是我试过的代码 field_num = (((boolean bool_is_int = is_integer(string)) == true) ? (Integer int = Integer.parseInt(string)) : null); 我试图做的(基本上)是将“field_num”(类型为int)设置为“string”的值,如果它等于

我有一个字符串,我想在将其存储为对象的属性之前将其转换为整数。虽然我可以使用常规的if语句,但我想使用三元运算来建立对它的理解。这是我试过的代码

        field_num = (((boolean bool_is_int = is_integer(string)) == true) ? (Integer int = Integer.parseInt(string)) : null);
我试图做的(基本上)是将“field_num”(类型为
int
)设置为“string”的值,如果它等于一个整数(首先转换它)
is_integer
是一个我必须检查字符串是否等于整数的函数。它返回一个布尔值

谢谢你的帮助

field_num = is_integer(string) ? Integer.parseInt(string): -1;
在简单的英语中,这表示如果“string”是一个整数,则解析int的字符串并将其设置为field_num,否则,将其设置为-1-1是任意的。您应该改为使用对字段_num无效的数字


您不需要is_integer(string)==true,因为其计算结果与is_integer(string)相同。您也不需要设置布尔布尔布尔值bool_is_int,因为除非您以后在程序中实际需要该值。

我会这样做:

Integer theint = is_integer(thestr) ? Integer.parseInt(thstr) : null;

不能将NULL赋值给内在int,但可以将NULL赋值给整型对象。当然,通常情况下,您只需依靠parseInt()调用抛出异常,而不是事先显式测试字符串的完整性。

您应该只使用if/else语句。如果要根据条件将变量设置为两个值之一,则三元运算符非常有用。在您的示例中,如果字符串不是整数,则不希望设置值,因此三元值不适合这种情况。

保持简单:)

要确定
字符串是否表示
int
值,请执行以下操作:

public static boolean isInt(String s) {
    try { 
        Integer.parseInt(s); 
    } catch(NumberFormatException e) { 
        return false; 
    }
    return true;
}
[更正]

一次只学一件事

首先,是?:运算符(通常被称为条件运算符或if/else运算符;“Trialum”仅表示它接受三个参数,而且它是唯一一个这样做的C运算符,因此会产生混淆)


啊。所以字段_num是一个整数。如果你这么说,我会帮你的

第二:附带作业。如果你不知道你需要做这件事,并且你不能完全清楚地表明你在做什么以及为什么要做,那么就不要这样做。这很难理解,而且很少是合适的

此外,“int”不是合法的变量名

但如果你坚持:

Integer myint;
boolean bool_is_int;
field_num = (bool_is_int = is_integer(string)) ? (myint = Integer.parseInt(string)) : null;
在false/else情况下,myint的值是多少?它被保留为之前设置的值。这可能是您想要的,但阅读您的代码的人很难理解


在大多数情况下,除非?:是一个非常简单的、一眼就能读懂的--
(foo!=null)?doSomething():defaultValue
——最好使用真正的if/then/else语句。在编译器和JIT完成后,它可能同样有效,而且维护起来会容易得多。

不能将null传递给int。三元的假分支仍然应该是int,可能是一个标志,用于指示错误的输入,如-1或其他内容。
int
是一个保留字,不能用于变量名。我们已经发现(下面)字段_num可能是一个整数。这就解释了空值的原因。如果在问题陈述中包含这一点,那会有所帮助。凯什兰:如果我错了,请纠正我,但我想我确实说过。我说:“…设置为'field_num'(类型为int)”。“啊,所以field_num是一个整数。如果你这么说的话,我会有所帮助的。”谢谢johnsoe,你帮了很多忙。不尊重任何人;这只是我看到的第一个有帮助的答案。
field_num = is_integer(string) ? Integer.parseInt(string) : null;
Integer myint;
boolean bool_is_int;
field_num = (bool_is_int = is_integer(string)) ? (myint = Integer.parseInt(string)) : null;