2017-06-05 4 views
-2

Ich muss einen int-Wert "nid" verwenden, um zu arbeiten. Aber dieser int-Wert sollte eine Kombination aus int "did" und String "a" sein!Abrufen eines ganzzahligen Teils von einem String

int did = 123456; 
String a = "_b"; 
int nid = Integer.parseInt((did+a).toString()); 

Aber für diesen Code bekomme ich die Fehlermeldung

java.lang.NumberFormatException: For input string: "123456_b" 

Gibt es eine Möglichkeit, in int eine Kombination aus int und Zeichenfolge zu konvertieren?

+2

Welchen int-Wert suchen Sie von "123456_b"? 'b' ist keine Nummer. –

+0

Sie können 'String' nicht in' int' konvertieren. 'nid' sollte' String' sein. – Guy

+1

Das riecht nach einem [XY-Problem] (https://meta.stackexchange.com/q/66377/286538). Kannst du den Kontext deiner Frage erklären? Was ist das 'nid', warum muss es integer sein, wo willst du es verwenden? – RealSkeptic

Antwort

0

Gibt es eine Möglichkeit, eine Kombination aus int und string in int zu konvertieren?

Nur wenn die Zeichenfolge ein numerischer Wert ist.
Es ist nicht dein Fall.
Integer.parseInt(String) wartet auf einen String-Parameter, der eine analysierbare Ganzzahl ist. Aber Sie könnten niemals "_b"String als gültigen Teil eines Integer-Wertes verwenden.

Sie können jedoch die Berechnung als String speichern:

int did = 123456; 
String a = "_b"; 
String nid = did + a; 
+0

Angenommen, die Ascii Ziffern sind die ersten in der Zeichenfolge. Verwenden Sie charAt() in einer Schleife, um das letzte Zeichen zu finden. Verwenden Sie substring(), um diese Zeichen zu extrahieren. Verwenden Sie Integer.parseInt(), um die Ganzzahl abzurufen. – Marichyasana

+0

@Marichyasana Es ist richtig, aber es geht davon aus, dass wir einige Teile des ursprünglichen String in der endgültigen Berechnung verwerfen können. Die Frage ist nicht sehr klar darüber. Ich hätte nicht geantwortet. – davidxxx

0

Wenn ich Sie richtig verstehe, haben Sie einen String „123456_b“, und Sie wollen einen numerischen Teil davon abgerufen werden. Habe ich recht? "(D +) [_ a-zA-Z]" -

In diesem Fall können Sie regex verwenden. Angenommen, der numerische Teil endet mit einem Unterstrich (_). Deshalb lege ich es in die Regex. Ich benutzte eine Gruppe (d +), um einen numerischen Teil zu fangen.

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Main { 

    public static void main(String[] args) { 
     String str = "1234567_abcde"; 
     Pattern pattern = Pattern.compile("(\\d+)[_]?[a-zA-Z]"); 
     Matcher matcher = pattern.matcher(str); 
     if (!matcher.find()) { 
      System.out.println("Did not find a numeric part."); 
      return; 
     } 

     String numericGroup = matcher.group(1); 
     System.out.println(numericGroup); 
     int number = Integer.parseInt(numericGroup); 
     System.out.println(number); 
    } 
} 
0

die nicht numerischen Zeichen zuerst entfernen und dann versuchen, es

String str = did+a; 
str = str.replaceAll("/[^0-9]/g", ""); 
int nid = Integer.parseInt(str); 
0

Ich verstehe nicht, Parsen, was Sie wollen. Der Fehler ist normal, b ist keine Zahl, und Sie können nicht nid als int deklarieren.

Vielleicht möchten Sie nur verketten ein mit haben?

In diesem Fall muss nid ein String sein, kein int.

Verwandte Themen