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 的非法修饰符;只允许final
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 为基数的数字(与 using 不同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;

公共类新类{

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 回答