一个分离整数的Java程序
我用Java编写了以下代码来分隔整数。示例:12345至12345 代码如下:一个分离整数的Java程序,java,integer,Java,Integer,我用Java编写了以下代码来分隔整数。示例:12345至12345 代码如下: public class Modulus { public static void main(String[] args) { int number=Integer.parseInt(args[0]); String counter= Integer.toString(number); int count=(int)(counter.length()-1); 创建数组时,您需要counte
public class Modulus {
public static void main(String[] args) {
int number=Integer.parseInt(args[0]);
String counter= Integer.toString(number);
int count=(int)(counter.length()-1);
创建数组时,您需要
counter.length()
而不是counter.length()-1
。数组的索引指向n-1
,而不是字符串的长度(即n
)
当您在阵列中循环时,您希望从count-1开始,然后从那里往下走
如果数字为12345
,则数组的大小必须为5
,才能容纳5位数字,索引从0-4
。因此,您希望使用count
创建数组,并从count-1
开始打印
这应该解决索引越界的问题,但您还有其他问题
注意,只要找到一个零,即使在数字中间,你的循环也会停止。因此,如果您有3405,您的应用程序将打印5,然后停止
此外,对您的问题的评论暗示了总体上更简单的方法,尽管您所做的对于学习来说是很好的。从第一个while循环中出来,您将有count>=0计算为false-count将为负值
进入第二个while循环,您将尝试计算track[count]。如果计数为负数,这将抛出ArrayIndexOutOfBoundsException
Edit:正如hvgotcodes所指出的,您看到的异常实际上是在代码的前面抛出的
int [] track = new int[count]; // int of length count - indexed 0 to count-1
while (num > 0 && count>=0) {
track[count]=(num % 10); // get value indexed count - out of bounds!
一旦解决了这个问题,您可能会遇到我发现的问题。;) 数组索引从零开始。
所以如果你做int count=(int)(counter.length()-1);
如果您的计数为3,则可以有索引0、1、2
当您写入磁道[count]=(num%10)时,尝试磁道[3],因此会出现错误。尝试以下操作:
counter.replaceAll(".(?=.)", "$0 ")
public class Modulus {
public static void main(String[] args) {
String numString = "12345";
int num = Integer.parseInt(numString);
char[] numCharArray = numString.toCharArray();
for(int i=0;i<numCharArray.length;i++){
System.out.print(numCharArray[i]+i != numCharArray.length-1 ? " " : "");
}
}
}
它将用字符+a sapce替换每个字符。尝试以下操作:
counter.replaceAll(".(?=.)", "$0 ")
public class Modulus {
public static void main(String[] args) {
String numString = "12345";
int num = Integer.parseInt(numString);
char[] numCharArray = numString.toCharArray();
for(int i=0;i<numCharArray.length;i++){
System.out.print(numCharArray[i]+i != numCharArray.length-1 ? " " : "");
}
}
}
公共类模数{
公共静态void main(字符串[]args){
字符串numString=“12345”;
int num=Integer.parseInt(numString);
char[]numcharray=numString.tocharray();
对于(int i=0;i这不会使数组大小变大吗?虽然我尝试过,但仍然得到相同的错误计数器。length-1给出了一个长度错误的数组,它是track[count]=这会导致异常,需要在设置数组之前而不是在loop@user1213994,不,我添加了文本来解释(第3段)谢谢大家的帮助。我成功地修复了它。我用修复程序编辑了这篇文章,因为它不适合评论,我无法回答我自己的问题。这是家庭作业吗?如果是的话,就这样标记它。对于做家庭作业试图学习的人来说,给出答案不是最好的主意。