Java程序分隔整数

时间:2012-02-16 14:08:04

标签: java integer

我在Java中编写了以下代码来分隔整数。示例:12345至1 2 3 4 5

以下是代码:

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

5 个答案:

答案 0 :(得分:3)

创建数组时,您希望counter.length()不是counter.length()-1。数组的索引转到n-1,而不是字符串的长度(n)。

当您循环播放数组时,您希望从count-1开始,然后从那里开始。

如果数字为12345,那么您的数组必须大小为5,以保留5位数,并且索引来自0-4。因此,您希望使用count创建数组,并开始在count-1打印。

这应该解决你的索引越界问题,但你也有其他问题。

注意,一旦找到零,你的循环就会停止,即使它位于数字的中间位置。因此,如果您有3405,您的应用将打印5然后停止。

此外,对您的问题的评论暗示了整体更简单的方法,尽管您正在做的事情对学习很好。

答案 1 :(得分: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!

一旦解决了这个问题,您可能会遇到我发现的问题。 ;)

答案 2 :(得分:0)

数组索引从零开始。  所以如果你做int count =(int)(counter.length() - 1);  如果假设您的计数为3,则可以使用索引0,1,2  当您编写track [count] =(num%10)时,您尝试跟踪[3],从而导致错误。

答案 3 :(得分:0)

试试这个:

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

它将用空格的字符替换每个字符。

答案 4 :(得分: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 ? " " : "");
        }
    }
}