-3

プログラムを実行すると:

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

※もちろん宿題です。私は過去 4 日間にわたって Web サイトを精査し、diff のアイデアに基づいて数え切れないほどコードを変更しました。これは、変更を試み続けている最後の手段です。これを機能させるために進むべきアイデア/方向性はありますか?

ありがとう。

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

あなたが示したコードでは、入力された文字列を数値に変換し、一度に 1 文字ずつ処理しようとし%ます/。一見すると、このループは意図したとおりには機能しないように見えますが、幸いなことに、そのようなアプローチは必要ありません。このコードがパフォーマンスに影響を与えるものではないと仮定すると、ユーザーの入力を一度に 1 文字ずつ処理し、その 1 桁を解析できます。次に例を示します。

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 に答える