5

数字の文字列「123188」を取得するメソッドを作成しようとしています

int[]次に、数字を含むを返します。

私がこれまでに持っているもの:

public int[] stringToDig(String a)
{
  char [] ch1 = a.toCharArray();
  int [] conv = new int [ch1.length];

  for (int i=0 ; i<ch1.length ; i++)
      conv[i] = Character.getNumericValue(ch1[i]);

  return conv; 
}

そして私はそれを手に入れました

この行に複数のマーカー:

  • トークン "(" の構文エラー、; 予期される
  • トークン ")" の構文エラー、; 期待される
  • パラメータ stringToDig の修飾子が不正です。最終のみが許可されます
4

4 に答える 4

16

Java では、他のメソッドの中にメソッドを配置することはできません。

プログラムを次のように構成します。

public class Test
{
    public static void main(String[] args)
    {
        int[] digits = stringToDig("54235");
    }

    public int[] stringToDig(String a)
    {
        char [] ch1 = a.toCharArray();
        int [] conv = new int [ch1.length];

        for (int i=0 ; i<ch1.length ; i++)
            conv[i] = Character.getNumericValue(ch1[i]);

        return conv; 
    }
}
于 2013-09-13T19:51:01.607 に答える
2

これを試して:

public int[] stringToDig(String a) {

  char[] ch1 = a.toCharArray();
  int[] conv = new int[ch1.length];

  for (int i = 0; i < ch1.length; i++)
    conv[i] = Character.digit(ch1[i], 10); // here's the difference

  return conv; 

}

文字数字を対応するint値に変換するための推奨される方法は、digit()メソッドを使用することです。これは別のオプションですが、これは少しハックであり、基数 10 の数字に対してのみ機能します (digits()他の基数で機能する を使用するのとは異なります)。

conv[i] = ch1[i] - '0';

それに加えて、@Cruncher は正しいです - 表示されたエラーは、クラス内にメソッドを配置するのを忘れたことを示しているようです! 彼のアドバイスに従ってください。

于 2013-09-13T19:49:32.330 に答える
0

このコードは私のために働きます:

public int[] stringToDig(String a) {
    char[] chars = a.toCharArray();
    int[] ints = new int[chars.length];

    for (int i = 0; i < chars.length; i++)
        ints[i] = chars[i] - 48;

    return ints;
}
于 2013-09-13T19:52:10.773 に答える
0

java.util.Arrays をインポートします。

パブリック クラス NewClass {

public static void main(String[] args) {
    System.out.println(Arrays.toString(stringToDig("123456789")));
}

public static int[] stringToDig(String a) {
    int [] c = new int[a.length()];
    for (int i = 0; i < c.length; i++) {
        c[i] = Integer.parseInt(String.valueOf(a.charAt(i)));
    }
    return c;
} 

}

于 2013-09-13T19:59:09.800 に答える