Android: преобразование строки в int - PullRequest
37 голосов
/ 27 июля 2011

Я просто пытаюсь преобразовать строку, сгенерированную сканером штрих-кода, в 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 и все равно получил ошибку.

Ответы [ 8 ]

45 голосов
/ 27 июля 2011

Изменить

try {
    myNum = Integer.parseInt(myString.getText().toString());
} catch(NumberFormatException nfe) {

на

try {
    myNum = Integer.parseInt(myString);
} catch(NumberFormatException nfe) {
9 голосов
/ 27 июля 2011

Это уже строка? Удалите вызов getText ().

int myNum = 0;

try {
    myNum = Integer.parseInt(myString);
} catch(NumberFormatException nfe) {
  // Handle parse error.
}
8 голосов
/ 01 сентября 2014

Вам просто нужно написать строку кода, чтобы преобразовать вашу строку в int.

 int convertedVal = Integer.parseInt(YOUR STR);
3 голосов
/ 31 января 2014

Используйте регулярное выражение:

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;
2 голосов
/ 15 марта 2014

Используйте регулярное выражение:

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;

1 голос
/ 09 сентября 2016

Вы не можете преобразовать в строку, если целочисленное значение равно нулю или начинается с нуля (в этом случае 1-й ноль будет игнорироваться).Попробуйте изменить.

int NUM=null;
1 голос
/ 01 сентября 2014
Штрих-код

часто состоит из большого числа, поэтому я думаю, что ваше приложение падает из-за размера строки, которую вы пытаетесь преобразовать в int.Вы можете использовать BigInteger

BigInteger reallyBig = new BigInteger(myString);
0 голосов
/ 05 апреля 2019

попробуйте

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...