-3

当我运行程序时:

        Enter a number: 222
        Digit:      0 1 2 3 4 5 6 7 8 9
        Occurrences:    1 9

*显然这是家庭作业。在过去的四天里,我浏览了这个网站,并根据不同的想法无数次地更改了代码,这是我在继续尝试进行更改时的最后手段。有什么想法/方向可以完成这项工作吗?

谢谢。

import jpb.*;

            public class RepeatDigit {
        public static void main(String[] args) {
    //User input
    SimpleIO.prompt("Enter a number: ");
    String userInput = SimpleIO.readLine().trim();
    int number = Integer.parseInt(userInput);

    //Array to store digit counts               
    int[] digitCounts = new int [10];

    while (number > 0) {
        digitCounts[number%10]++;
        number /=10;
    }

    System.out.print("Digit:\t\t");

    //Printing 0-9
    int[] digit = {0,1,2,3,4,5,6,7,8,9};
    for (int i1 = 0; i1 < digit.length - 1; i1++)
        System.out.print(digit[i1] + " ");
    System.out.print(digit[digit.length - 1]);

    System.out.print("\nOccurrences:    ");

            //Attempt to make a new array copy and compare this with 
            //user input

    int []tempArray= new int [digit.length];
    System.arraycopy(digit, 0, tempArray, 0, digit.length);
        for (int i1 = 0; i1 < tempArray.length - 1; i1++)
                if (tempArray[i1] == number);
                    number += 1;


    System.out.print(tempArray[number] + " "); e
    System.out.print(tempArray[tempArray.length -1]);
4

2 回答 2

1

首先,你的

for (int i1 = 0; i1 < digit.length - 1; i1++)
        System.out.print(digit[i1] + " ");
    System.out.print(digit[digit.length - 1]);

看起来有点不必要地难以阅读。你可以做

for (int i1 = 0; i1 < digit.length; i1++)
        System.out.print(digit[i1] + " ");

其次,我猜你想打印出标签digitCounts后面的内容。Occurences在这种情况下,您可以按照与打印digit[]数组相同的方式执行此操作。

如果那不是您想要做的,请告诉我您实际上想要做什么,以便我可以更好地帮助您。

于 2012-07-03T20:34:28.900 回答
0

我认为这是预期的行为:

Enter a number: 222
Digit:      0 1 2 3 4 5 6 7 8 9
Occurrences:    3

在您显示的代码中,您将输入的字符串转换为数字,然后尝试使用%and一次处理一个字符/。乍一看,这个循环似乎不太可能按预期工作,但幸运的是,不需要这种方法。假设此代码不是性能关键,您可以一次通过用户输入一个字符并解析该单个数字,例如:

for (Character c : input.toCharArray()) {
    int i = Integer.parseInt(c.toString());
    // handle i
}

arraycopy除非作业需要,否则我不会使用此任务。使用一个用 0 填充的大小为 10 的数组。每当您解析数字x时,增加 index 处的值x

你似乎已经弄清楚了打印digit[],你可以对出现的次数做同样的事情。

于 2012-07-04T09:32:44.010 回答