我只是尝试将从条形码扫描器生成的字符串转换为int,以便我可以通过获取余数来生成一组整数来操纵它。到目前为止,我已经尝试过:
int myNum = 0;
try {
myNum = Integer.parseInt(myString.getText().toString());
} catch(NumberFormatException nfe) {
}
和
Integer.valueOf(mystr);
和
int value = Integer.parseInt(string);
第一个给出了错误:方法getText()未定义String类型 虽然最后两个没有任何编译错误,但应用程序在调用时会立即崩溃。我认为这与我的条形码扫描意图方法有关,但我把它放入OnCreate并仍然出错。
答案 0 :(得分:45)
更改
try {
myNum = Integer.parseInt(myString.getText().toString());
} catch(NumberFormatException nfe) {
到
try {
myNum = Integer.parseInt(myString);
} catch(NumberFormatException nfe) {
答案 1 :(得分:9)
它已经是一个字符串?删除getText()调用。
int myNum = 0;
try {
myNum = Integer.parseInt(myString);
} catch(NumberFormatException nfe) {
// Handle parse error.
}
答案 2 :(得分:8)
您只需编写代码行将字符串转换为int。
int convertedVal = Integer.parseInt(YOUR STR);
答案 3 :(得分:3)
使用正则表达式:
int i=Integer.parseInt("hello123".replaceAll("[\\D]",""));
int j=Integer.parseInt("123hello".replaceAll("[\\D]",""));
int k=Integer.parseInt("1h2el3lo".replaceAll("[\\D]",""));
<强>输出:强>
i=123;
j=123;
k=123;
答案 4 :(得分:2)
使用正则表达式:
String s="your1string2contain3with4number";
int i=Integer.parseInt(s.replaceAll("[\\D]", ""))
输出:i = 1234;
如果您需要第一个数字组合,那么您应该尝试以下代码:
String s="abc123xyz456";
int i=((Number)NumberFormat.getInstance().parse(s)).intValue()
输出:i = 123;
答案 5 :(得分:1)
条形码通常由大量数字组成,所以我认为您的应用程序因为您尝试转换为int
的字符串大小而崩溃。你可以使用BigInteger
BigInteger reallyBig = new BigInteger(myString);
答案 6 :(得分:1)
如果整数值为零或从零开始,则无法转换为字符串(在这种情况下,第一个零将被忽略)。 尝试改变。
int NUM=null;
答案 7 :(得分:0)
尝试
String t1 = name.getText().toString();
Integer t2 = Integer.parseInt(mynum.getText().toString());
boolean ins = myDB.adddata(t1,t2);
public boolean adddata(String name, Integer price)
答案 8 :(得分:-1)
//将字符串转换为整数
// String s = "fred"; // use this if you want to test the exception below
String s = "100";
try
{
// the String to int conversion happens here
int i = Integer.parseInt(s.trim());
// print out the value after the conversion
System.out.println("int i = " + i);
}
catch (NumberFormatException nfe)
{
System.out.println("NumberFormatException: " + nfe.getMessage());
}