2012-10-11 5 views
-4

나는 60 미만의 성적을 반환하는이 코드를 가지고 있습니다. 그러나 원하는 퍼센트가 나오지는 않습니다. 누군가 내가 무엇이 잘못되었는지 알아낼 수있게 도와줍니다. i0에서 1의 정수로 증가하고 있기 때문에내 코드가 잘못되었습니다.

public float getPercentFailing(float[] grades) { 

    float sum= 0; 

    for (int i = 0; i < .6; i++) { 
     sum = sum + grades[i]; 
     return sum/100; 
    } 
    return 0; 
} 
+2

그것은 ** ** 컴파일하지만, .6' 당신이 원하는 아직없는 '것이다. – arshajii

+0

컴파일됩니다. 나는 어떻게 그런지 모르겠다. 이것은 나의 다음 기본 시험 연습을위한 것이지만, 어리석은, 그들은 해결책을주지 않는다. –

답변

1

다음과 같이 시도해보십시오. 먼저 for 루프에서 수행하는 모든 성적을 추가해야합니다. 이제 우리는 60을 넘는 성적만을 원했기 때문에 if 문을 사용하여 값이 60 이상인지 확인합니다. 그럴 경우 합계에 더하고 int count을 합산하여 지금까지 추가 한 성적을 추적합니다 .

for (int i = 0; i < grades.length; i++) {  //loop through all the grades 
    if(grade[i] < 60) {       //if the grade is over 60 
     sum = sum + grades[i];     //add the grade to the sum 
     count++         //remember how many grades so we can get average 
    } 
} 

나서 성적 또는 grades.lengthreturn 및 그것을의 총 수에 의해 등급의 합을 나눈다. 함께 지금

return sum/count ;        //calculate average 

모든 :

public float getPercentFailing(float[] grades) { 
    int count=0; 
    float sum= 0; 
    for (int i = 0; i < grades.length; i++) { 
      if(grade[i] < 60) { 
      sum = sum + grades[i]; 
      count++ 
      } 
    } 
    return sum/count; 

} 
+1

-1 이것은 잘못된 것 같습니다. 60 % 미만의 학년 평균을 계산 중입니다. 그것이 OP를 정확하게 이해한다면 60 % 미만의 성적 비율과 같은 결과가 아닙니다. – NullUserException

+0

당신이 한 일을 봅니다.이 문제는 해결할 수없는 유일한 것입니다. 예상되는 리턴 유형은 float이기 때문입니다. –

+0

@AdeqHero, NullUser가 맞습니다. 나는 그 질문을 오해 한 것으로 믿는다. 60 % 미만으로 떨어지는 성적의 비율을 찾고 있습니까? 따라서 10 개의 테스트 중 5 개의 실패한 성적은 50 %가됩니다. –

0

귀하의 루프는 i=0를 들어, 한 번만 사용할 수 있습니다.

0

당신은 60 % 미만이다 그 수를 모든 성적 통해 루프를 원하는 개수 : 그럼

int count = 0; 
for (int i=0; i!=grades.length; ++i) { 
    if (grades[i] < 0.6) { 
     count++; 
    } 
} 

return ((float) count)/grades.length 

당신은 비율에 의해을 계산 총계로 다이빙

+0

마지막 줄은 함수가'float'을 반환해야하기 때문에'1.0' 대신에'1.0f' (또는 더 나은,'((float) count)')를 사용해야합니다. –

1

귀하의 논리가 잘못되었습니다. 모든 성적을 거치고 각 학년 (루프 지수가 아님)을 0.6과 비교하고 싶습니다. 성적을 평균화하고 싶지는 않지만 얼마나 많은 점수가 임계치보다 적은지 계산하고 싶습니다. 대신 일부의 비율로 필요한 경우

public float getPercentFailing(float[] grades) { 

    int failed = 0; 

    for (int i = 0; i < grades.length; i++) { 
     if (grades[i] < 0.6) { 
      failed++; 
     } 
    } 
    return ((float) failed)/grades.length; 
} 

이, 마지막 줄에 변경 : 이런 식으로 뭔가 작업을해야합니다

return 100.0f * failed/grades.length; 
-1

변수 'i'를이 정수 및 사용되는 배열 '등급'을 반복하는 카운터로 사용합니다. 카운터 'i'를 사용하여 배열에 색인을 작성하여 등급 값을 얻은 다음 if 문을 사용하여 등급이 60 % 미만인지 확인하십시오. 그런 다음 60 % 미만인 경우 총 백분율에 추가하고 값을 백분율로 반환하십시오./편집 확장

코드 특징 :

public float getPercentFailing(float[] grades) { 
    int count=0; 
    float sum= 0; 
    for (int i = 0; i < grades.length; i++) { 
     float grade = grades[i]; 
     if(grade < 0.6) 
      sum = sum + grades[i]; 
     count++; 
    } 
    return sum/count; 
} 
+0

-1 지형지 물의 답이 잘못 나온 것과 같은 이유로 잘못된 것입니다. – NullUserException

관련 문제