public static void main(String[] args) {
int avg=0,sum=0,percentage=0;
Scanner input = new Scanner(System.in);
int[]arr=new int [6];
System.out.println("Enter all the elements: ");
for(int i=0; i<6; i++)
{
arr[i]=input.nextInt();
sum+=arr[i];
avg=sum/6;
}
System.out.println("Average is: "+avg);
for(int i=0;i<arr.length;i++)
{
if(arr[i]>avg)
{
percentage=(arr[i]*100/6);
}
}
System.out.println("Percentage is: "+percentage+"%");
}
例如,如果数组中的3个元素大于平均值,则百分比为3 * 100/6 = 50%
答案 0 :(得分:0)
您在底部的计算错误。
for(int i=0;i<arr.length;i++){
if(arr[i]>avg)
{
percentage=(arr[i]*100/6);
}
}
在这里,正确的计算应该是
for(int i=0;i<arr.length;i++){
if(arr[i]>avg)
{
percentage += (100/6);
}
}
您必须将计数arr[i]
大于平均值的次数相加,然后将计数乘以100/6
。上面的代码正是这样做的。
注意:percentage
变量应该是浮点数而不是整数
答案 1 :(得分:0)
您需要找到大于平均值的值总数。然后,您可以将该总数除以最大值,然后乘以100即可得出百分比。例如,如果我们使用6、5、4、3、2、1;平均值为3。大于3的总数为3(6、5、4)。然后,我们将3(总数)除以max(6)得到0.5,然后乘以100得到50(50%)。
array = 6, 5, 4, 3, 2, 1
average = 3
max = 6
percentage = average / max * 100
public static void main(String[] args) {
int avg=0,sum=0,percentage=0;
Scanner input = new Scanner(System.in);
int[]arr=new int [6];
System.out.println("Enter all the elements: ");
for(int i=0; i<6; i++)
{
arr[i]=input.nextInt();
sum+=arr[i];
avg=sum/6;
}
System.out.println("Average is: "+avg);
int greaterThan = 0;
for(int i=0;i<arr.length;i++)
{
if(arr[i]>avg) {
greaterThan++;
}
}
percentage = (int) (((double) greaterThan / (double) arr.length) * 100D);
System.out.println("Percentage is: "+percentage+"%");
}
答案 2 :(得分:0)
首先,要计算全局平均值,请使用数组长度更通用,最后进行计算
double sum=0;
for(int i=0; i<6; i++){
arr[i] = input.nextInt();
sum += arr[i];
}
avg = sum/input.length;
System.out.println("Average is: "+avg);
然后计算大于平均值的部分,找出有多少值大于最大值,然后除以总数:
double greaterAvg = 0;
for(int i=0;i<arr.length;i++){
if(arr[i]>avg){
greaterAvg++;
}
}
double percentage = 100 * greaterAvg / input.length
System.out.println("Percentage is: "+percentage+"%");
我使用double
类型删除了int division problem
:Int division: Why is the result of 1/3 == 0?
答案 3 :(得分:0)
您可以使用初始化为零的计数器变量首先对元素进行计数,然后只需使用[EL Warning]: moxy: 2019-10-27 15:01:08.586--javax.xml.bind.JAXBException:
Exception Description: The @XmlAttribute property first in type model.Tuple2 must reference a type that maps to text in XML. model.Coords cannot be mapped to a text value.
- with linked exception:
[Exception [EclipseLink-50096] (Eclipse Persistence Services - 2.7.4.v20190115-ad5b7c6b2a): org.eclipse.persistence.exceptions.JAXBException
Exception Description: The @XmlAttribute property first in type model.Tuple2 must reference a type that maps to text in XML. model.Coords cannot be mapped to a text value.]
oct. 27, 2019 3:01:08 PM org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo
GRAVE: MessageBodyWriter not found for media type=application/json, type=class model.ActionList, genericType=class model.ActionList.
答案 4 :(得分:0)
计算具有大于值的元素的百分比 平均。首先,您必须找到这些元素的数量,然后将其除 元素总数
尝试一下:
public static void main(String[] args) {
int avg=0,sum=0,percentage=0;
Scanner input = new Scanner(System.in);
int[]arr=new int [6];
System.out.println("Enter all the elements: ");
for(int i=0; i<6; i++)
{
arr[i]=input.nextInt();
sum+=arr[i];
avg=sum/6;
}
System.out.println("Average is: "+avg);
int count = 0;
for(int i=0;i<arr.length;i++)
{
if(arr[i]>avg)
{
count=count+1;
}
}
System.out.println(count);
percentage = (count*100)/6;
System.out.println("Percentage is: "+percentage+"%");
}
输出:
Enter all the elements:
1 2 3 4 5 6
Average is: 3
3
Percentage is: 50%
答案 5 :(得分:0)
您正在计算循环中的平均值,因为每次迭代时该值都会被压缩,所以效率不高。最好只将总和保留在循环中,并在第一个循环之后计算平均值。
这就是说,您的代码中只有两个主要(功能性)问题:
第一个是循环中的百分比处理-您缺少了“ + =”并且不应使用arr [i]值。
第二个是百分比的精度,应为double(例如)而不是int(与平均值相同-如果确实需要)。
总结:
double percentage = 0;
percentage=(arr[i]*100/6);
=> percentage += (100.0/6);
System.out.printf("Percentage is: (%.2f) %%", percentage);
干杯!