参数[变量]的非法修饰符;只有决赛是允许的

时间:2013-09-13 19:41:26

标签: java

我正在尝试编写一个获取数字字符串“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 个答案:

答案 0 :(得分:15)

您不能将方法放在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; 
    }
}

答案 1 :(得分: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是对的 - 显示的错误似乎表明您忘记将方法放在类中了!听从他的建议。

答案 2 :(得分: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;
}

答案 3 :(得分:0)

  

import 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;
} 
     

}