我的代码正在给我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 );
}
}
答案 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;
}