2012-02-16 53 views
1

我已经在Java中编写了以下代码来分隔整数。例如:12345至1 2 3 4 5用于分隔整数的Java程序

下面是代码:

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); 
+2

为什么不使用'toCharArray'? – 2012-02-16 14:10:36

+1

正在做作业吗?如果是这样标记它。 – hvgotcodes 2012-02-16 14:16:48

回答

3

你想counter.length()counter.length()-1,在创建该阵列。该阵列的索引去n-1,不是字符串(这是n)的长度。

当你循环数组时,你想从count-1开始,然后从那里往下走。

如果数字是12345,那么您的数组需要的大小为5,以保存5位数字,索引从0-4开始。因此,要与count创建磁盘阵列,并开始在count-1打印。

这应该解决您的索引超出范围问题,但您也有其他问题。

请注意,只要发现零,即使它位于数字中间,循环也会停止。所以,如果你有3405,你的应用程序将打印5,然后停止。

此外,您的问题的意见暗示整体更简单的方法,虽然你在做什么对学习是好的。

+0

但是,这不会使数组大小变大吗?我虽然尝试过,但我仍然得到相同的错误 – user1213994 2012-02-16 14:12:47

+0

柜台。长度为1的数组长度不正确,其导致异常的磁道[count] =,在数组设置之前计数需要递减,而不是在循环末尾 – Dampsquid 2012-02-16 14:13:49

+0

@ user1213994,否,我添加了文本解释说明(第3段) – hvgotcodes 2012-02-16 14:19:50

0

从第一个while循环开始,您将计数> = 0计算为false - 计数为负数。

进入第二个while循环,您正在尝试评估track [count]。如果count是负数,这将抛出ArrayIndexOutOfBoundsException。

编辑: 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! 

解决此问题后,您可能会遇到我发现的问题。 ;)

0

数组索引从零开始。所以如果你做int count =(int)(counter.length() - 1); 如果你的计数是3,你可以有索引0,1,2 当你写track [count] =(num%10)时,你试着跟踪[3],因此你会得到错误。

0

试试这个:

counter.replaceAll(".(?=.)", "$0 ") 

它将替换的字符+一个sapce每个字符。

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 ? " " : ""); 
     } 
    } 
} 
+1

给予答案并不是尝试学习功课的人的最佳想法。 – hvgotcodes 2012-02-16 14:21:30