我有一个JFrame,我从文本字段中获取输入并将其转换为Integer。 如果它是一个double,我也想将它转换为double,如果它既不是int也不是double,可能会返回一条消息。我怎么能这样做?
我目前的代码:
int textToInt = Integer.parseInt(textField[0].getText());
答案 0 :(得分:3)
String text = textField[0].getText();
try {
int textToInt = Integer.parseInt(text);
...
} catch (NumberFormatException e) {
try {
double textToDouble = Double.parseDouble(text);
...
} catch (NumberFormatException e2) {
// message?
}
}
要保持精度,请立即解析为BigDecimal。 这个parseDouble当然不是特定于语言环境的。
答案 1 :(得分:1)
try {
int textToInt = Integer.parseInt(textField[0].getText());
} catch(NumberFormatException e) {
try {
double textToDouble = Double.parseDouble(textField[0].getText());
} catch(NumberFormatException e2) {
System.out.println("This isn't an int or a double";
}
}
答案 2 :(得分:1)
boolean isInt = false;
boolean isDouble = false;
int textToInt = -1;
double textToDouble = 0.0;
try {
textToInt = Integer.parseInt(textField[0].getText());
isInt = true;
} catch(NumberFormatException e){
// nothing to do here
}
if(!isInt){
try {
textToDouble = Double.parseDouble(textField[0].getText());
isDouble = true;
} catch(NumberFormatException e){
// nothing to do here
}
}
if(isInt){
// use the textToInt
}
if(isDouble){
// use the textToDouble
}
if(!isInt && !isDouble){
// you throw an error maybe ?
}
答案 3 :(得分:0)
检查字符串是否包含小数点。
if(textField[0].getText().contains("."))
// convert to double
else
// convert to integer
没有必要抛出异常。
在执行上述操作之前,您可以使用正则表达式检查字符串是否为数字。一种方法是使用模式[0-9]+(\.[0-9]){0,1}
。我不是最好的正则表达式所以请纠正我,如果这是错的。
答案 4 :(得分:0)
您可以尝试一系列嵌套试用:
String input = textField[0].getText();
try {
int textToInt = Integer.parseInt(input);
// if execution reaches this line, it's an int
} catch (NumberFormatException ignore) {
try {
double textToDouble = Double.parseDouble(input);
// if execution reaches this line, it's a double
} catch (NumberFormatException e) {
// if execution reaches this line, it's neither int nor double
}
}