正しく印刷されない理由がわからないようです。
public class test3 {
public static void main(String[] args) {
double[] gens = {100, 200.1, 9.3, 10};
double d0 = 0;
double d1 = 0;
double d2 = 0;
double d3 = 0;
double d4 = 0;
double d5 = 0;
double d6 = 0;
double d7 = 0;
double d8 = 0;
double d9 = 0;
for (int i = 0; i < gens.length; i++) {
double percs = gens[i];
while (percs < -9 || 9 < percs) percs /= 10;
percs = Math.abs(percs);
if (percs == 0) {
d0 += 1;
}
else if (percs == 1) {
d1 += 1;
}
else if (percs == 2) {
d2 += 1;
}
else if (percs == 3) {
d3 += 1;
}
else if (percs == 4) {
d4 += 1;
}
else if (percs == 5) {
d5 += 1;
}
else if (percs == 6) {
d6 += 1;
}
else if (percs == 7) {
d7 += 1;
}
else if (percs == 8) {
d8 += 1;
}
else if (percs == 9) {
d9 += 1;
}
}
double[] pack = {
d0 /= gens.length,
d1 /= gens.length,
d2 /= gens.length,
d3 /= gens.length,
d4 /= gens.length,
d5 /= gens.length,
d6 /= gens.length,
d7 /= gens.length,
d8 /= gens.length,
d9 /= gens.length
};
System.out.println(pack[0]);
System.out.println(pack[1]);
System.out.println(pack[2]);
System.out.println(pack[3]);
System.out.println(pack[4]);
System.out.println(pack[5]);
System.out.println(pack[6]);
System.out.println(pack[7]);
System.out.println(pack[8]);
System.out.println(pack[9]);
}
}
私はそれがかなり反復的であることを知っています、しかしそれは私が今のところそれを扱っている方法です。
とにかく、基本的には、gens配列内のこれらの4つの数字を取得し、それらを各数字の最初の桁(つまり、それぞれ1、2、9、および1)に切り取り、0〜9の各桁が表示される回数をカウントする必要があります。したがって、「1」は0.5(50%)、2は.25(25%)、9は.25(25%)になり、0〜9の1桁おきに0が返されます。 「1」ですが、1つおきに0であり、間違いを見つけることができませんでした。入力する数値(ハードコード)によって結果は異なりますが、ほとんどの場合間違っています。
何か案は?
ありがとうございました!