web-dev-qa-db-de.com

Android: Konvertieren von String in int

Ich versuche einfach, eine Zeichenfolge, die von einem Barcodescanner generiert wurde, in eine Ganzzahl umzuwandeln, damit ich sie manipulieren kann, indem ich den Rest dazu bringe, eine festgelegte Anzahl von Ganzzahlen zu generieren. Bisher habe ich versucht:

int myNum = 0;

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

} 

und

Integer.valueOf(mystr);

und

int value = Integer.parseInt(string); 

Der erste gibt mir den Fehler: Die Methode getText () ist für den Typ String undefiniert, während die letzten beiden keine Kompilierungsfehler aufweisen, die App jedoch sofort abstürzt, wenn diese aufgerufen werden. Ich dachte, dass es mit meiner Methode zum Scannen von Barcodes zu tun hat, aber ich habe sie in OnCreate eingefügt und trotzdem den Fehler erhalten.

37
willmer

Veränderung

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

zu

try {
    myNum = Integer.parseInt(myString);
} catch(NumberFormatException nfe) {
45
citizen conn

Es ist schon eine Zeichenfolge? Entfernen Sie den Aufruf von getText ().

int myNum = 0;

try {
    myNum = Integer.parseInt(myString);
} catch(NumberFormatException nfe) {
  // Handle parse error.
}
9
JK.

Sie müssen nur die Codezeile schreiben, um Ihre Zeichenfolge in int zu konvertieren.

 int convertedVal = Integer.parseInt(YOUR STR);
8

Verwenden Sie einen regulären Ausdruck:

int i=Integer.parseInt("hello123".replaceAll("[\\D]",""));
int j=Integer.parseInt("123hello".replaceAll("[\\D]",""));
int k=Integer.parseInt("1h2el3lo".replaceAll("[\\D]",""));

Ausgabe:

i=123;
j=123;
k=123;
3
Ashish Sahu

Verwenden Sie einen regulären Ausdruck:

String s="your1string2contain3with4number";
int i=Integer.parseInt(s.replaceAll("[\\D]", ""))

ausgabe: i = 1234;

Wenn Sie die erste Zahlenkombination benötigen, sollten Sie den folgenden Code versuchen:

String s="abc123xyz456";
int i=((Number)NumberFormat.getInstance().parse(s)).intValue()

ausgabe: i = 123;

2
Ashish Sahu

Sie können nicht in einen String konvertieren, wenn Ihr ganzzahliger Wert Null ist oder mit Null beginnt (in diesem Fall wird die erste Null vernachlässigt). Versuchen Sie es mit einem Wechselgeld.

int NUM=null;
1
ABi

barcode besteht oft aus einer großen Zahl, daher denke ich, dass Ihre App aufgrund der Größe der Zeichenfolge, die Sie in int konvertieren möchten, abstürzt. Sie können BigInteger verwenden

BigInteger reallyBig = new BigInteger(myString);
1
Ker p pag

versuche dies

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)
0
Dev_android