情况
我有不同的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;
};
};
我的代码失败了,因为它恰好唤起了错误......
我希望有人可以帮助我:) 谢谢!
答案 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;
}