Ответ 1
Изменить
try {
myNum = Integer.parseInt(myString.getText().toString());
} catch(NumberFormatException nfe) {
к
try {
myNum = Integer.parseInt(myString);
} catch(NumberFormatException nfe) {
Я просто пытаюсь преобразовать строку, которая сгенерирована из сканера штрих-кода, в int, чтобы я мог манипулировать им, взяв оставшуюся часть для создания заданного числа целых чисел. До сих пор я пробовал:
int myNum = 0;
try {
myNum = Integer.parseInt(myString.getText().toString());
} catch(NumberFormatException nfe) {
}
и
Integer.valueOf(mystr);
и
int value = Integer.parseInt(string);
Первая дает мне ошибку: метод getText() - undefined для типа String в то время как последние два не имеют ошибок компиляции, но приложение сразу же срабатывает, когда вызываются. Я думал, что это связано с моим методом сканирования штрих-кода, но я положил его в OnCreate и все еще получил ошибку.
Изменить
try {
myNum = Integer.parseInt(myString.getText().toString());
} catch(NumberFormatException nfe) {
к
try {
myNum = Integer.parseInt(myString);
} catch(NumberFormatException nfe) {
Это уже строка? Удалите вызов getText().
int myNum = 0;
try {
myNum = Integer.parseInt(myString);
} catch(NumberFormatException nfe) {
// Handle parse error.
}
Вам просто нужно написать строку кода, чтобы преобразовать вашу строку в int.
int convertedVal = Integer.parseInt(YOUR STR);
Использовать регулярное выражение:
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;
Используйте регулярное выражение:
String s="your1string2contain3with4number";
int i=Integer.parseInt(s.replaceAll("[\\D]", ""))
: я = 1234;
Если вам нужна первая комбинация чисел, вы должны попробовать под кодом:
String s="abc123xyz456";
int i=((Number)NumberFormat.getInstance().parse(s)).intValue()
вывод: я = 123;
штрих-код часто состоит из большого количества, поэтому я думаю, что ваше приложение вылетает из-за размера строки, которую вы пытаетесь преобразовать в int
. вы можете использовать BigInteger
BigInteger reallyBig = new BigInteger(myString);
Вы не можете преобразовать в строку, если ваше целочисленное значение равно нулю или начинается с нуля (в этом случае 1-м ноль будет пренебрегать). Попробуйте изменить.
int NUM=null;
попробуй это
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)