Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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_Split_Binary - Fatal编程技术网

Java 将单个二进制字符串值拆分为数组

Java 将单个二进制字符串值拆分为数组,java,arrays,string,split,binary,Java,Arrays,String,Split,Binary,不可能这样做吗?我以前使用过split()方法来拆分字符串并将其存储到数组中。但对于二进制字符串值,我似乎不能这样做 例如:我希望将“100000”拆分并存储在如下数组中:someArray={1,0,0,0,0} 但我似乎不能那样做。它不断产生如下结果:someArray={100000,0,0,0,0,…} 这就是我所拥有的: result = Integer.toBinaryString(sum); String[] temp = result.split(" ");

不可能这样做吗?我以前使用过split()方法来拆分字符串并将其存储到数组中。但对于二进制字符串值,我似乎不能这样做

例如:我希望将“100000”拆分并存储在如下数组中:someArray={1,0,0,0,0} 但我似乎不能那样做。它不断产生如下结果:someArray={100000,0,0,0,0,…}

这就是我所拥有的:

    result = Integer.toBinaryString(sum);

    String[] temp = result.split(" ");

    for(int num: resultArray) {
        for(String s: temp) {
            resultArray[num] = Integer.parseInt(temp[s]);
        }
    }

    for(int num: resultArray) {
        System.out.print(num + ",");
    }

尽量贴近代码的精神(不一定是最有效的方式):

你需要在“什么都没有”的情况下分开,即

根据更新的问题更新了代码:

    String result;
Integer sum = 123;
int[] resultArray = new int[32];
Integer ii;
result = Integer.toBinaryString(sum);

    String[] temp = result.split("");
    ii = 0;
    for(String s: temp) {
      try {
        resultArray[ii++] = Integer.parseInt(s);
      } catch (NumberFormatException e) {
         // do nothing
      }
    }

    int n = ii;
    for (ii = 0; ii < n; ii++) {
      System.out.print(resultArray[ii]);
    }
    System.out.println();
我将数组的大小限制为32,这是int的典型值。如果您希望
sum
可能是较长的类型,则需要相应地进行调整

顺便说一句,使用它会更快

string[] temp = result.toCharArray();
ii = 0;
for(char s: temp) {
        resultArray[ii++] = s - '0';
}
int n = ii;
for (ii = 0; ii < n; ii++) {
      System.out.print(resultArray[ii]);
}
string[]temp=result.toCharArray();
ii=0;
用于(字符s:temp){
resultArray[ii++]=s-'0';
}
int n=ii;
对于(ii=0;ii

因为您知道
结果
纯粹是数字。

首先将
字符串
转换为
字符
数组,然后将其转换为
整数

String str = "100000";
char ch []  = str.toCharArray();
int [] temp = new int [ch.length];
for (int i = 0; i < ch.length; i++) {
     temp[i] = Integer.parseInt(""+ch[i]);
}
String str=“100000”;
char ch[]=str.toCharArray();
int[]temp=新int[ch.length];
for(int i=0;i
您正在拆分一个空格,但二进制字符串中没有空格?您应该在
”上拆分,即“无”。我想。你为什么不使用
%10
?@Prince:如果你将字符串视为十进制数(为了
%10
有用,你必须这样做),那么你只能处理最多10位的位字符串。任何超过此值的操作都会导致溢出/环绕,除非你达到
long
——即使这样,你仍然无法处理一个完整的整数位。你有两个嵌套的
for
循环…因此对于
num
的每个值,你都会循环
temp
的每个元素。没有任何错误检查…我以前做过,但它给了我一个错误。。我会再试一次,我想我知道为什么会出错。我更新了第一篇帖子。基本上,如果我想创建字符串数组的int数组副本,我该如何正确地将字符串值转换为int?@B.V我已经更新了我的答案…现在应该适合您了。我更喜欢最后一个公式——最紧凑的。但早期版本显示了如何修改代码以使其正常工作;它更接近你的原作。
string[] temp = result.toCharArray();
ii = 0;
for(char s: temp) {
        resultArray[ii++] = s - '0';
}
int n = ii;
for (ii = 0; ii < n; ii++) {
      System.out.print(resultArray[ii]);
}
String str = "100000";
char ch []  = str.toCharArray();
int [] temp = new int [ch.length];
for (int i = 0; i < ch.length; i++) {
     temp[i] = Integer.parseInt(""+ch[i]);
}