0

さて、数値を取得して int 配列に格納する際に問題があります。コードの基本的な概要はわかりましたが、ゼロ以外の数字のグループの前に 0 がある場合に表示される方法でそれらを保存するのに問題があります。

たとえば、これを行うと:

String s = "030142165109876";
private static void breakCode(String s){
    int x = s.length(), m = 0, l = x/5;
    String[] array = s.split("");
    int[] output = new int[l+1];
    int[] results = new int[array.length];

    for(int i = 0; i < x/5; i++){
        double y = 0;
        if(i == 0){
            for(int r = 5; r >= 0; r--){
                try {results[m] = Integer.parseInt(array[m]);} catch (NumberFormatException nfe) {};
                y = y + (Math.pow(10, r) * results[m]);
                m++;
            }
            output[i] = (int) y;
            System.out.println(output[i]);
        }
        if (i != 0){
            for(int r = 4; r >= 0; r--){

                try {results[m] = Integer.parseInt(array[m]);} catch (NumberFormatException nfe) {};
                y = y + (Math.pow(10, r) * results[m]);
                m++;
            }
            output[i] = (int) y;
            System.out.println(output[i]);
        }

    }
}

このコードの出力は次のとおりです。

3014
21651
9876

ゼロを左側に保持するにはどうすればよいですか? 累乗関数を使用していて、その累乗の左端の値が印刷時に表示されないためです。int 配列に 5 桁を保持させて、数値が 10000 未満の場合に左端の値を 0 として保持する方法はありますか? 2 行目は 0 で始まらないため、5 桁すべてが適切に保持されますが、1 番目と 3 番目は保持されません (例として数字を書きました。実際のプログラムではランダムな数字が使用されます)。

完全な開示、これは割り当て用ですが、この問題を解決するために私が考えたプログラムによる方法では解決しません。私はこの Web サイト全体で特定の問題を広範囲に検索しました (信じてください、ここで検索するのが大好きになりました) が、この特定の問題に関する有用なヒントは見つかりませんでした。これは問題を解決する私自身の方法でもあり、int 配列の場所に 5 桁を保持する方法がある場合は、友人のコーディング仲間に実際に考えてもらうよりも、自分のソリューションでそれをやりたいと思います。私自身の発案ではないエレガントなソリューション。

ありがとうございました

PS私は非常に冗長です

4

2 に答える 2

0

数値は常に保存され[1]、デフォルトではゼロなしで出力されます。これは、Java (および他のほとんどすべての言語) がどのように機能するかです。

5桁だけ印刷したい場合は、 を検討してprintfください。

printf("%05d\n", output[i]);

本当に常に5 桁を格納したい場合は、メソッドを使用String[]して分割しStringます。のsubstringメソッドは、Stringやりたいことを簡単に行う必要があります。

[1] 概念的に (そして、すべてではないにしてもほとんどの実用的な目的で)、数値は先行ゼロなしで格納されます。実際、厳密に言えば、そうではありません。Java は数値を格納するためにいくらかのメモリを割り当て、このメモリの一部にゼロを設定します。全体のメモリ ピースとして、先行ゼロがありますが、基になる処理によってこれらのゼロが破棄されます。これが数値の理解方法であるためです。

于 2013-09-30T03:27:40.250 に答える