整数的百分比不正确

时间:2014-12-07 08:58:29

标签: java

我的代码正在给我44400.0%。我已经搞砸了一堆,但这是我得到正确答案的最接近的。我只允许在我定义临时数组的行上更改内容。当我试图划分更多时,我会丢失有效数字,因为我需要三个四分之一作为百分比的一部分。

import java.text.DecimalFormat;

public class ArrayElements90OrMore 
{
    public static void main( String [] args ) 
    {
        int [] array = { 91, 82, 73, 94, 35, 96, 90, 89, 65 };
        DecimalFormat percent = new DecimalFormat( "#0.0%" );

        System.out.print( "The elements are " );
        for ( int i = 0; i < array.length; i++ )
            System.out.print( array[i] + " " );
        System.out.println( );

        System.out.println( "The percentage of elements 90 or greater is "
                            + percent.format( percent90OrMore( array ) ) );
    }

    public static int percent90OrMore( int [] temp ) 
    {
        int count = 0;
        for ( int i = 0; i < temp.length; i++ ) {
            if ( temp[i] >= 90 ) {
                count++;
            }
        }

        return  ( count * 1000 ) / ( temp.length );
    }
}

2 个答案:

答案 0 :(得分:3)

通常,您应该乘以100以获得某个分数的百分比:

return  ( count * 100 ) / temp.length;

但是,如果您已经使用percent.format将分数显示为百分比,则应该只返回分数:

return  (double) count / temp.length;

请注意,在这种情况下,percent90OrMore必须返回float或double。否则,您将始终获得0或1。

  public static double percent90OrMore (int[] temp)
  {
      int count = 0;
      for ( int i = 0; i < temp.length; i++ )
      {
          if ( temp[i] >= 90 )
          {
              count++;
          }
      }   
      return  (double)count/temp.length;
  }

答案 1 :(得分:0)

如果你不想改变方法返回类型的奇怪方法是:

System.out.println( "The percentage of elements 90 or greater is "
                        + percent.format( percent90OrMore( array ) * 1000.0d / ( (double) temp.length ) ) );

并按以下方式更改您的方法:

public static int percent90OrMore( int [] temp ) {
    int count = 0;
    for ( int i = 0; i < temp.length; i++ ) {
        if ( temp[i] >= 90 ) {
            count++;
        }
    }

    return count;
}