0

我试图让这个“for”语句打印出数组的十进制值,但我无法弄清楚。

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

格式应该在模式中

%[argument_index$][flags][width][.precision]转换

在您的情况下,您错过了精度部分。尝试“%3.4d....”例如..

如果您可以提供您的输入和预期输出,我可以提供更好的帮助

于 2013-07-16T06:16:20.457 回答
0

你的percent变量是一个int. 根据定义,整数是整数。

试试这个:

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

我将类型更改percentdouble,它可以是浮点数(即十进制)。我也改成360000因为360000.0totals[b]一个int. 在 Java 中,整数算术返回另一个整数。不幸的是,这意味着除法的其余部分丢失了。您必须强制其中一个操作数为浮点类型(例如double),以使除法执行您认为的操作。因此,您可以手动转换或通过添加.0.

于 2013-07-16T06:32:34.627 回答