一个分离整数的Java程序

一个分离整数的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

我用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);

创建数组时,您需要
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段)谢谢大家的帮助。我成功地修复了它。我用修复程序编辑了这篇文章,因为它不适合评论,我无法回答我自己的问题。这是家庭作业吗?如果是的话,就这样标记它。对于做家庭作业试图学习的人来说,给出答案不是最好的主意。