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

时间:2013-04-10 16:41:12

标签: android indexoutofboundsexception arrays

情况

我有不同的char []数组,其中包含不同数量的项目。为了避免处理它们时出现“OutOfBounds”错误,我想将它们标准化。 例如:

My Array包含以下项目:“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;
        };
    };

我的代码失败了,因为它恰好唤起了错误......

我希望有人可以帮助我:) 谢谢!

3 个答案:

答案 0 :(得分:2)

您的解决方案不起作用的原因是您为所有内容使用相同的数组。 在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

更简单的解决方案可能是:

myarray1 = String.format("%6s", mystring1).replace(' ', '0').toCharArray();

答案 1 :(得分:0)

首先尝试填充0并不会解决错误。 其次,你的逻辑是不对的(假设大小为6),将其改为myString.length()。 我不明白myarray1[i] = myarray1[i];的观点。

无论如何,每个具有整数大小的数组都根据Java specs由Zero初始化。另一方面,如果您想要填充任何其他值,请尝试Arrays.fill()

答案 2 :(得分:0)

我认为这个功能可以完成你想要做的事情。

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