3

このような約150個の数字の文字列がありますStringnum= "64513246563 ........";

この文字列の各桁を追加しようとしています。だから私の考えは、それをintの配列に分割し、そこからそれらを追加することでした。まず、文字列配列に分割してから、Int配列に変換しようとします。不明なソースエラーが発生します。以下はコードです:

String[] strArray = num.split("");
int[] intArray = new int[strArray.length];
        for(int i = 0; i < strArray.length; i++) {
           intArray[i] = Integer.parseInt(strArray[i]);
           } 

そしてここにエラーがあります:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)

誰かが私が間違っていることを見ることができますか、またはこれを行うためのより効率的な方法がありますか?

////////////////////////////////

皆さんの助けに感謝します。.split( "")を使用して文字列を分割すると、インデックス0に空の文字列が作成されるようです。これが私の主な問題でしたが、問題をより効率的に解決する方法について多くの有用なポインタがありました:)ありがとうあなたの入力のためにあなた全員

4

8 に答える 8

8

で指定された最初の文字列num.split("");は空です。

解決策は、単純にインデックス 1 で反復を開始することです。

しかし、あなたがしていることはあなたができることよりもはるかに高価です

    String num = "64513246563";
    for(int i = 0; i < num.length(); i++) {
         int digit = num.charAt(i)-'0';
         ... // use the digit, perhaps adding it
    } 
于 2012-12-07T16:43:09.593 に答える
5
int sum = 0;
for (int i = 0; i < string.length(); i++) {
    sum += Character.getNumericValue(string.charAt(i));
}
于 2012-12-07T16:40:05.083 に答える
3
java.lang.NumberFormatException: For input string: ""

入力が空の文字列であることを明確に伝える例外メッセージ。

処理する 1 つの方法は、解析する前に空のStringチェックを行うことです。

 for(int i = 0; i < strArray.length(); i++) {
           if(strArray[i] != null && !"".equals(strArray[i])
              {
               int q = Integer.parseInt(strArray[i]);
              }
           } 

注: 入力が有効な int でない場合は失敗しますが、空の文字列 (または) null の場合は失敗しません。

これを処理する別の方法chartAt(i)は、使用する代わりに取得しますsplit("")

于 2012-12-07T16:39:54.353 に答える
2
String num="12234";
        String[] numarr = num.split("");
        System.out.println(numarr.length);

で文字列を分割すると、0 番目のインデックスに空の文字列""ができます。したがって、結果の配列は次のようになります。

{"", "1", "2", "2", "3", "4"}

テストすると、上記は長さを 6 として返します。したがってInteger.parseInt("")NumberFormatExceptionが発生します。

テスト:

String num="12234";
        String[] numarr = num.split("");
        for(String s: numarr){
            if(s.equals("")){
                System.out.println("empty string");
            }
            else {
                System.out.println(s);
            }

出力:

empty string
1
2
2
3
4

したがって、インデックス 0 に emptyString があります。

そのため、文字列を解析する前に、文字列が空の文字列かどうかを確認する必要があります。

String[] strArray = num.split("");
int[] intArray = new int[strArray.length];
        for(int i = 0; i < strArray.length; i++) {
           if(!strArray[i].equals(""))
           intArray[i] = Integer.parseInt(strArray[i]);
           } 
于 2012-12-07T16:42:48.550 に答える
1
char[] charArray = num.toCharArray();

for(char c : charArray) {
    int q = Integer.parseInt("" + c);
} 
于 2012-12-07T16:43:11.327 に答える
0
for(int i=0; i<yourString.length; i++) {
    yourIntegers[i] = Integer.parseInt(yourString.charAt(i).ToString());
}
于 2012-12-07T16:42:35.803 に答える
0

配列は空の文字列から始まるため、最初の要素をスキップする必要があるため、 for ループで開始iします。1

for(int i = 1; i < strArray.length; i++)
于 2012-12-07T16:47:21.683 に答える
0

各数字を解析しながら、文字列に沿って進むだけです。

int sum = 0;
for (int i = 0; i < num.length(); ++i) {
    sum += Integer.parseInt(num.substring(i, i + 1));
}
于 2012-12-07T16:43:53.803 に答える