2014-02-09 7 views
0

Я хочу сделать отображение викторины, Labs, Lab посещаемости, как, как промежуточные выборы this- Quizzes: 66% Labs: 88% Lab посещаемости: 81% промежуточных выборов: 91% Финал: Не применим Общим средним: 85 %. Но я получаюКак получить правильный результат для моих методов?

выход:

66.0 
88.0 
81.0 
91.0 

Как бы я получить правильный выход для того, что я пытаюсь сделать.

import java.io.*; 
    import java.util.*; 

public class FindGrade { 
    public static final int NUM_SCORE_TYPES = 5; 

    public static void main(String[] args) { 
     Scanner scan = null; 
     int[] quizArray = null; 
     int[] labArray = null; 
     int[] attendance = null; 
     int[] midterms = null; 
     int quizgrade = 0; 
     int labgrade = 0; 
     int attendance_1 = 0; 
     int midterms_1 = 0; 
     String name; 


     try { 
      scan = new Scanner(new File("input.txt")); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
      return; 
     } 

     // each iteration is for single exam type (ie: Quizzes is the 1st one) 
     for (int i = 0; i < NUM_SCORE_TYPES; i++) { 

      name = scan.next(); 
      int numScores = scan.nextInt(); 
      int maxGrade = scan.nextInt(); 

      if (name.equals("Quizzes")) { 
       quizArray = new int[numScores]; 
       readScores(quizArray, numScores, scan,maxGrade); 


      } else if (name.equals("Labs")) { 
       labArray = new int[numScores]; 
       readScores(labArray, numScores, scan,maxGrade); 

      } else if (name.equals("Lab_attendance")) { 
       attendance = new int[numScores]; 
       readScores(attendance, numScores, scan,maxGrade); 

      } else if (name.equals("Midterms")) { 
       midterms = new int[numScores]; 
       readScores(midterms, numScores, scan,maxGrade); 

      } 

     } 

    } 


    public static void readScores(int[] scoreArray, int numScores, Scanner scan, int maxGrade) { 
     for (int i = 0; i < numScores; i++) { 
      scoreArray[i] = scan.nextInt(); 
     } 
     System.out.println(average(scoreArray, numScores, maxGrade)); 
    } 

    public static int normalize(int[] scoreArray, int maxGrade) { 
     int total = 0; 
     for (int i = 0; i < scoreArray.length; i++) { 
      total += scoreArray[i]; 
     } 
     int percent = Math.round(total * 100/maxGrade); 
     return percent; 
    } 

    public static double average(double[] scoreArray, int numScores,int maxGrade) { 
     double sum = 0; 
     for (int i = 0; i < scoreArray.length; i++) { 
      sum += scoreArray[i]; 
     } 
     double average = Math.round((sum/numScores)*100/maxGrade); 

     return average; 

}

входного файла:

Quizzes 8 10 
5 8 9 10 4 0 10 7 
Labs 6 100 
95 90 100 87 63 92 
Lab_attendance 16 1 
1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 
Midterms 2 100 
87 94 
Final 0 100 

ответ

1

Вот ваш модифицированный код & ожидается о/р:

import java.io.*; 
import java.util.*; 

public class FindGrade { 
public static final int NUM_SCORE_TYPES = 5; 

public static void main(String[] args) { 
    Scanner scan = null; 
    String quizzes= "Quizzes"; 
    String labs= "Labs"; 
    String lab_attendance= "Lab_attendance"; 
    String midterm= "Midterms"; 
    int[] quizArray = null; 
    int[] labArray = null; 
    int[] attendance = null; 
    int[] midterms = null; 
    int quizgrade = 0; 
    int labgrade = 0; 
    int attendance_1 = 0; 
    int midterms_1 = 0; 
    String name; 


    try { 
     scan = new Scanner(new File("C://Users//Desktop//input.txt")); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     return; 
    } 

    // each iteration is for single exam type (ie: Quizzes is the 1st one) 
    for (int i = 0; i < NUM_SCORE_TYPES; i++) { 

     name = scan.next(); 
     int numScores = scan.nextInt(); 
     int maxGrade = scan.nextInt(); 

     if (name.equals("Quizzes")) { 
      quizArray = new int[numScores]; 
      readScores(quizArray, numScores, scan,maxGrade, quizzes); 


     } else if (name.equals("Labs")) { 
      labArray = new int[numScores]; 
      readScores(labArray, numScores, scan,maxGrade, labs); 

     } else if (name.equals("Lab_attendance")) { 
      attendance = new int[numScores]; 
      readScores(attendance, numScores, scan,maxGrade,lab_attendance); 

     } else if (name.equals("Midterms")) { 
      midterms = new int[numScores]; 
      readScores(midterms, numScores, scan,maxGrade, midterm); 

     } 

    } 

} 


public static void readScores(int[] scoreArray, int numScores, Scanner scan, int maxGrade, String name) { 
    for (int i = 0; i < numScores; i++) { 
     scoreArray[i] = scan.nextInt(); 
    } 
    average(scoreArray, numScores, maxGrade, name); 
} 

public static int normalize(int[] scoreArray, int maxGrade) { 
    int total = 0; 
    for (int i = 0; i < scoreArray.length; i++) { 
     total += scoreArray[i]; 
    } 
    int percent = Math.round(total * 100/maxGrade); 
    return percent; 
} 

public static double average(int[] scoreArray, int numScores,int maxGrade, String name) { 
    double sum = 0; 
    for (int i = 0; i < scoreArray.length; i++) { 
     sum += scoreArray[i]; 
    } 
    double average = Math.round((sum/numScores)*100/maxGrade); 

    System.out.println(name + ":" + average+" %"); 

    return average; 
} 
} 

и результат есть:

Quizzes:66.0 % 
Labs:88.0 % 
Lab_attendance:81.0 % 
Midterms:91.0 %** 
+0

Если бы я хотел включить общее среднее значение, я бы приблизился к нему таким же образом, как и для среднего метода. – user124557

+0

@ user124557 - Хорошо, вы хотите получить окончательное среднее значение результата, да, вы можете использовать свой метод avreage как мудрый или создать отдельный метод для расчета окончательной версии и печати. Надеюсь, это помогло! – VibrantVivek

+0

Уважаемый пользователь @ user124557, если он сработал или помог вам, пожалуйста, признайте его как ответ. Спасибо. – VibrantVivek

-2

Вы фактически не размещать код, где вы печатаете ничего, но то, что вы хотите, вероятно System.out.format().

+0

Я забыл добавить s.o.p. Я добавил его к исходному коду. – user124557

+0

@ user124557 Понятия не имею, почему кто-то отклонил мой правильный ответ; это именно то, что вам нужно. – chrylis

0

Вам необходимо указать название для среднего и напечатать имя и оценку. Посмотрите ниже фиксированный код с предложением, он дает вход, который вы ищете.

import java.io.*; 
import java.util.*; 

public class FindGrade { 
public static final int NUM_SCORE_TYPES = 5; 

public static void main(String[] args) { 
    Scanner scan = null; 
    int[] quizArray = null; 
    int[] labArray = null; 
    int[] attendance = null; 
    int[] midterms = null; 
    int quizgrade = 0; 
    int labgrade = 0; 
    int attendance_1 = 0; 
    int midterms_1 = 0; 
    String name; 


    try { 
     scan = new Scanner(new File("c:\\temp\\input.txt")); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     return; 
    } 

    // each iteration is for single exam type (ie: Quizzes is the 1st one) 
    for (int i = 0; i < NUM_SCORE_TYPES; i++) { 

     name = scan.next(); 
     int numScores = scan.nextInt(); 
     int maxGrade = scan.nextInt(); 

     if (name.equals("Quizzes")) { 
      quizArray = new int[numScores]; 
      readScores(quizArray, numScores, scan,maxGrade, "Quizzes"); 


     } else if (name.equals("Labs")) { 
      labArray = new int[numScores]; 
      readScores(labArray, numScores, scan,maxGrade, "Labs"); 

     } else if (name.equals("Lab_attendance")) { 
      attendance = new int[numScores]; 
      readScores(attendance, numScores, scan,maxGrade, "Lab_attendance"); 

     } else if (name.equals("Midterms")) { 
      midterms = new int[numScores]; 
      readScores(midterms, numScores, scan,maxGrade, "Midterms"); 

     } 

    } 

} 


public static void readScores(int[] scoreArray, int numScores, Scanner scan, int maxGrade, String name) { 
    for (int i = 0; i < numScores; i++) { 
     scoreArray[i] = scan.nextInt(); 
    } 
    average(scoreArray, numScores, maxGrade, name); 
} 

public static int normalize(int[] scoreArray, int maxGrade) { 
    int total = 0; 
    for (int i = 0; i < scoreArray.length; i++) { 
     total += scoreArray[i]; 
    } 
    int percent = Math.round(total * 100/maxGrade); 
    return percent; 
} 

public static double average(int[] scoreArray, int numScores,int maxGrade, String name) { 
    double sum = 0; 
    for (int i = 0; i < scoreArray.length; i++) { 
     sum += scoreArray[i]; 
    } 
    double average = Math.round((sum/numScores)*100/maxGrade); 

    System.out.println(name + ":" + average); 

    return average; 
} 
} 

И тогда ожидаемый результат при его запуске:

Quizzes:66.0 
Labs:88.0 
Lab_attendance:81.0 
Midterms:91.0 
Смежные вопросы