0

この「for」ステートメントで配列の 10 進数値を出力しようとしていますが、わかりません。

for ( int b = 2; b < totals.length; b++ )
{
    int percent = totals[ b ] / ( 360000 );
    System.out.printf( "%3d%12d%17d\n", b, totals[ b ], percent );   
}

printf ステートメントで %.2f を実行しようとしましたが、うまくいきません。

もちろん、コードには他にもありますが、私を助けるためにもっと見る必要があるかどうかはわかりません. どんなヒントも素晴らしいでしょう。

編集:コードは次のとおりです。

import java.util.Random;

public class Roll36K
{

public void rollDice()
{
    Random randomNumbers = new Random();

    int die1; // number on first die
    int die2; // number on second die
    int totals[] = new int[ 13 ]; // frequencies of the sums


    for ( int index = 0; index < totals.length; index++ )
    totals[ index ] = 0;


    for ( int roll = 1; roll <= 36000000; roll++ ) 
    {
    die1 = 1 + randomNumbers.nextInt( 6 );
    die2 = 1 + randomNumbers.nextInt( 6 );
    totals[ die1 + die2 ]++;
 } 


System.out.printf( "%3s%12s%17s\n", "Sum", "Frequency", "Sim. Probability" );


for ( int b = 2; b < totals.length; b++ )
{
int percent = totals[ b ] / ( 360000 );

System.out.printf( "%3d%12d%17d\n", b, totals[ b ], percent );
 } // end for
} // end method rollDice
} // end class Roll36
4

2 に答える 2

0

あなたのpercent変数はint. 整数は定義上、整数です。

代わりにこれを試してください:

double percent = totals[ b ] / ( 360000.0 );

percentの型をに変更しましたdouble。これは浮動小数点数 (つまり、10 進数) にすることができます。も に変更360000しまし360000.0た。整数の Java 演算では、別の整数が返されます。残念ながら、それは除算の残りが失われることを意味します。オペランドの 1 つを強制的に浮動小数点型 ( など) にして、除算を想定どおりに実行させる必要があります。したがって、手動でキャストするか、定数を追加して double にすることができます。totals[b]intdouble.0

于 2013-07-16T06:32:34.627 に答える
0

フォーマットはパターンにある必要があります

%[argument_index$][フラグ][幅][.precision]変換

あなたの場合、精密部分を見逃しています。たとえば、「%3.4d....」を試してください..

あなたの入力と期待される出力を提供していただければ、より良いお手伝いができます

于 2013-07-16T06:16:20.457 に答える