Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,将数字字符串转换为数组,其中每个数字都是不同的插槽_Java_Arrays_String - Fatal编程技术网

在Java中,将数字字符串转换为数组,其中每个数字都是不同的插槽

在Java中,将数字字符串转换为数组,其中每个数字都是不同的插槽,java,arrays,string,Java,Arrays,String,假设我有一个123456789字符串。我想拆分这个字符串,每个数字都放在数组中的不同插槽中。我无法使用split()方法,因为没有可拆分的内容。我如何在Java中实现这一点。如果您只处理非负整数,该方法应该适合您。它将字符串作为数组提供给您。string类有一个简洁的方法来实现这一点。是否强制要求数据为一位数?如果数据可能为多位数,则无法识别数值是否为一位数或多位数? int x=123456789; char[] array = x.toString().toCharArray(); int

假设我有一个
123456789
字符串。我想拆分这个字符串,每个数字都放在数组中的不同插槽中。我无法使用
split()
方法,因为没有可拆分的内容。我如何在Java中实现这一点。

如果您只处理非负整数,该方法应该适合您。它将字符串作为数组提供给您。

string类有一个简洁的方法来实现这一点。

是否强制要求数据为一位数?如果数据可能为多位数,则无法识别数值是否为一位数或多位数?
int x=123456789;
char[] array = x.toString().toCharArray();

int intarray[] = new int[array.length];
for (int i = 0; i < array.length; i++) {
intarray[i] = Integer.parseInt(array[i]);
}
e、 g.如果是12(十二),那么如果所有字符串都是512,那么您将如何确定是将512表示为5,1,2还是5,12?
如果修复了数字为单位数和非负数,则
String
类的
tocharray()
将适用于您

您可以使用以下方法避免创建字符串

long x = x;
ByteBuffer bb = ByteBuffer.allocate(18);
if (x == 0) {
    bb.put((byte) 0);
} else {
    while (x > 0) {
        bb.put((byte) (x % 10));
        x /= 10;
    }
}
int len = bb.position();
byte[] digits = new byte[len];
for (int i = 0; i < len; i++)
    digits[i] = bb.get(len - i - 1);
长x=x;
ByteBuffer bb=ByteBuffer.allocate(18);
如果(x==0){
bb.put((字节)0);
}否则{
而(x>0){
bb.put((字节)(x%10));
x/=10;
}
}
int len=bb.position();
字节[]位数=新字节[len];
对于(int i=0;i
数据必须是个位数吗?是的,它将始终是个位数。然后
ToCharray()
方法将适用于
String
类,正如旁注:您可以在空字符串上拆分(
“1234”拆分(“”);
),但是,您可以在开始时获得每个字符加上一个空字符串。这只是为了记录,我还建议使用这里建议的
tocharray()
方法;char[]数组=x.toString().tocharray();int intarray[]=新的int[array.length];对于(inti=0;i将适合您,而不是在注释中添加那么多代码,我建议您编辑答案。这将是更容易阅读更好的格式化代码那里。+1为最完整的解决方案迄今为止。注意:如果您确定字符串只包含数字,这就足够了:
intarray[i]=array[i]-“0”
long x = x;
ByteBuffer bb = ByteBuffer.allocate(18);
if (x == 0) {
    bb.put((byte) 0);
} else {
    while (x > 0) {
        bb.put((byte) (x % 10));
        x /= 10;
    }
}
int len = bb.position();
byte[] digits = new byte[len];
for (int i = 0; i < len; i++)
    digits[i] = bb.get(len - i - 1);