2017-06-05 51 views
-2

作業にはint値 "nid"を使用する必要があります。しかし、このint値は、int "did"とString "a"の組み合わせでなければなりません!文字列から整数部分を取得する

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

しかし、このコードのために私は、エラーメッセージ

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

がintにint型と文字列の組み合わせを変換する方法は、あり得ますか?

+2

「123456_b」から何のint値をお探しですか? 'b'は数字ではありません。 –

+0

'String'を' int'に変換することはできません。 'nid'は' String'でなければなりません。 – Guy

+1

[XY問題](https://meta.stackexchange.com/q/66377/286538)のようなにおいがします。質問の文脈を説明できますか? 'nid'とは何ですか、どうして整数でなければならないのですか、どこで使うのですか? – RealSkeptic

答えて

0

intとstringの組み合わせをintに変換する方法はありますか?

文字列が数値の場合のみ。
あなたのケースではありません。
Integer.parseInt(String)は、解析可能な整数であるStringパラメータを待ちます。 しかし、"_b"Stringを整数値の有効部分として使用することはできません。

ただし、Stringとして計算を保存することができます。

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

文字列の最初にアスキー数字があるとします。ループ内でcharAt()を使用して、そのような最後の文字を探します。これらの文字を抽出するには、substring()を使用します。 Integer.parseInt()を使用して整数を取得します。 – Marichyasana

+0

@Marichyasanaそれは正しいですが、最終計算で元のStringの一部を破棄できると仮定しています。それについての質問はあまり明確ではありません。私は答えなかったでしょう。 – davidxxx

0

私が正しくあなたを理解していれば、あなたは文字列「123456_b」を持っている、とあなたはそれの数字の一部を取得します。私は正しい?

この場合、regex - "(d +)[_ a-zA-Z]"を使用できます。数値部分がアンダースコア(_)で終わるとしましょう。だから私はそれを正規表現に入れます。私は、数字の部分をキャッチするためにグループ(d +)を使いました。

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

最初の数値以外の文字を削除してから、私はあなたが望むものを理解していないそれを

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

を解析してみてください。 エラーは正常です。bは数字ではなく、nidをintとして宣言することはできません。

でしたか?

この場合、nidはintでなく、文字列でなければなりません。

関連する問題