Android:将数组填充到一定长度

Android:将数组填充到一定长度,android,indexoutofboundsexception,arrays,Android,Indexoutofboundsexception,Arrays,形势 我有不同的char[]数组,包含不同数量的项。为了避免在处理它们时出现“边界外”错误,我想对它们进行标准化。 例如: 我的数组有以下项目:“5;9”->我希望它看起来像什么:“0,0,0,0,5,9”(用“0”填充到6个项目) 我的尝试: char[] myarray1 = mystring1.toCharArray(); ... for(int i=0; i<6; i++){ myarray1[i] = 0; if(i<myarray1.len

形势

我有不同的char[]数组,包含不同数量的项。为了避免在处理它们时出现“边界外”错误,我想对它们进行标准化。 例如:

我的数组有以下项目:“5;9”->我希望它看起来像什么:“0,0,0,0,5,9”(用“0”填充到6个项目)

我的尝试:

char[] myarray1 = mystring1.toCharArray();
...
for(int i=0; i<6; i++){
        myarray1[i] = 0;
        if(i<myarray1.length-1){
            myarray1[i] = myarray1[i];
        }else{
            myarray1[i] = 0;
        };
    };
char[]myarray1=mystring1.toCharArray();
...

对于(int i=0;i,首先尝试填充0不会修复错误。 其次,您的逻辑不正确(假设大小为6),请将其更改为
myString.length()
。 我不明白
myarray1[I]=myarray1[I];
的意义


不管怎么说,每个整数大小的数组都是根据0初始化的。另一方面,如果您想用任何其他值填充它,请尝试。

解决方案不起作用的原因是您对所有内容都使用相同的数组。 在
char[]myarray1=mystring1.toCharArray();
myarray1
的长度是2,因此不能简单地在循环中分配条目2、3、4和5。此外,如果希望字符串中包含字符“0”,则需要用撇号将零括起来

您可以这样修复解决方案:

char[] myNewArray = new char[6];
int myarrayIndex = 0;
for(int i=0; i<6; i++)
{
    if(i < (myNewArray.length - myarray1.length)) {
        myNewArray[i] = '0';
    } else {
        myNewArray[i] = myarray1[myarrayIndex++];
    };
};

System.out.println(myNewArray); //Will print out: 000059

我认为这个函数将完成您想要做的事情

private static String formatString(String input)
{
    String FORMATTED_STRING = "0,0,0,0,0,0";
    int difference = FORMATTED_STRING.length() - input.length();
    return FORMATTED_STRING.substring(0, difference) + input;
}

你只处理数字吗?如果是的话,为什么要处理字符串?你是将字符串作为输入,只需匹配格式就可以生成六个字符的输出吗?谢谢!第二种解决方案非常有效,非常简单:)我没有想到字符串。格式。。。无论如何,谢谢!
private static String formatString(String input)
{
    String FORMATTED_STRING = "0,0,0,0,0,0";
    int difference = FORMATTED_STRING.length() - input.length();
    return FORMATTED_STRING.substring(0, difference) + input;
}