从TextField到Integer的字符串

时间:2014-08-20 00:42:20

标签: java string integer libgdx

试图将String转换为整数。我正在使用libgdx&我已经尝试了一些做这件事的方法。我一直得到空的回报。

这是我最近尝试过的最简单方法。

String x = textfield_1.getText();
String y = textfield_2.getText();
Integer integerfield_1 = Integer.getInteger(textfield_1.getText(), null);
if (integerfield_1 == null) {
    System.out.println("Incorrect Integer (Integer Only)");
} else {
    System.out.println("Please Enter The Position");
    //TODO Fill GUI Form.
}

任何人有任何提示吗?

2 个答案:

答案 0 :(得分:2)

查看Integer.getInteger(String, Integer)的JavaDocs一段时间

  

返回:
属性的整数值。

或者从长远来看......

  

返回具有指定系统属性的整数值   名称。第一个参数被视为系统属性的名称。   系统属性可通过   System.getProperty(java.lang.String)方法。这个字符串的值   然后将属性解释为整数值,如下所示   Integer.decode方法和表示此值的Integer对象   归还。

     
      
  • 如果属性值以两个ASCII字符0x或ASCII字符#开头,后面没有减号,那么其余的   它被解析为十六进制整数,与方法完全相同   valueOf(java.lang.String,int)with radix 16。
  •   
  • 如果属性值以ASCII字符0开头,后跟另一个字符,则将其解析为八进制整数,与   方法valueOf(java.lang.String,int)with radix 8.。
  •   
  • 否则,属性值被解析为十进制整数,与方法valueOf(java.lang.String,int)的基数完全相同   10.

  •   
     

第二个参数是默认值。默认值为   如果没有指定名称的属性,则返回   属性没有正确的数字格式,或者如果指定的   name为空或null。

这不是你认为的那样......

相反,您应该使用Integer.parseInt(String),当NumberFormatException的值无法转换为有效整数时,这会抛出String ...

例如......

String x = textfield_1.getText();
String y = textfield_2.getText();
try {
    Integer integerfield_1 = Integer.parseInt(textfield_1.getText());
    System.out.println("Please Enter The Position");
    //TODO Fill GUI Form.
} catch (NumberFormatException exp) {
    exp.printStackTrace();
    System.out.println("Incorrect Integer (Integer Only)");
}

答案 1 :(得分:1)

如果我理解你,那么

Integer integerfield_1 = Integer.getInteger(textfield_1.getText(), null);

应该像Integer.parseInt(String)这样 -

int integerfield_1 = 0;
try {
  integerfield_1 = (x != null) ? Integer.parseInt(x.trim()) : 0;
} catch (NumberFormatException e) {
  e.printStackTrace();
}

如果您真的想使用Integer(包装器),那么您可以使用Integer.valueOf(String)

Integer integerfield_1 = null;
try {
  integerfield_1 = (x != null) ? Integer.valueOf(x.trim()) : null;
} catch (NumberFormatException e) {
  e.printStackTrace();
}