0

情况

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

我的数组有以下项目:“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;
        };
    };

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

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

4

3 回答 3

2

您的解决方案不起作用的原因是您对所有内容都使用相同的数组。char[] myarray1 = mystring1.toCharArray();的长度为 2之后myarray1,因此您不能简单地在循环中分配条目 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();
于 2013-04-10T17:00:04.283 回答
0

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

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

于 2013-04-10T16:57:53.360 回答
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;
}
于 2013-04-10T17:07:47.653 回答