我正在尝试编写一个获取数字字符串“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的非法修饰符;唯一的决定是 允许
答案 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; }
}