2014-01-05 12 views
0

Я создал файл, в котором есть оценки учащихся. Я получил среднее из каждого из них, но теперь, как я могу найти максимум и минимум каждого теста. Я попытался, но он просто печатает случайные числа и идеи? Также, если бы я хотел распечатать их оценки, если бы какие-либо заявления нового файла, как я мог бы это сделать?Максимальные и минимальные номера

import java.io.File; 
import java.io.IOException; 
import java.util.*; 

public class Project3 { 

    public static void main(String[] args) throws IOException { 



     ReadFile r = new ReadFile(); 
     r.openFile(); 
     r.readFile(); 
     r.closeFile(); 
-- 

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

public class Grades { 

    private Formatter x; 
    //Formatter variable- output string to file 


    public void openFile(){ 
     //method to open file 
     try{ 
      x = new Formatter("grades.txt"); 


     } 
     catch(Exception e){ 
      System.out.println("Could not find file."); 
     } 
    } 

     public void addRecords(){ 
     x.format("%d",8); 
     x.format(" %s %s, %d, %d, %d, %d, %d, %d, %d", " Thui", "Bhu", 100, 90, 80, 100, 89, 99, 88); 
     x.format(" %s %s, %d, %d, %d, %d, %d, %d, %d", "\n ArianaB", "Smith", 90, 90, 100, 100, 99, 100, 95); 
     x.format(" %s %s, %d, %d, %d, %d, %d, %d, %d", "\n Emily", "Gonzales", 100, 90, 100, 70, 78, 78, 80); 
     x.format(" %s %s, %d, %d, %d, %d, %d, %d, %d", "\n Jenifer", "L", 80, 90, 90, 100, 89, 99, 85); 
     x.format(" %s %s, %d, %d, %d, %d, %d, %d, %d", "\n Maria", "Jones", 65, 72, 77, 68, 62, 70, 65); 
     x.format(" %s %s, %d, %d, %d, %d, %d, %d, %d", "\n Bill", "Gates", 60, 54, 38, 62, 65, 60, 50); 
     x.format(" %s %s, %d, %d, %d, %d, %d, %d, %d", "\n Escobar", "Morris", 83, 77, 88, 76, 79, 72, 76 ); 
     x.format(" %s %s, %d, %d, %d, %d, %d, %d, %d", "\n Anne", "Latner", 80, 90, 85, 95, 90, 95, 90 ); 


     } 
     public void closeFile(){ 
      x.close(); 
     } 
     // 



} 
-- 

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

import java.util.*; 
public class ReadFile { 

private Scanner x; 

     public void openFile(){ 
    try{ 
     x = new Scanner (new File ("grades.txt")); 
    } 
    catch(Exception e){ 
     System.out.println("could not find file"); 
    }} 



ppublic void openFile(){ 
    try{ 
     x = new Scanner (new File ("grades.txt")); 
    } 
    catch(Exception e){ 
     System.out.println("could not find file"); 
    }} 



public void createFile()throws IOException { 


    try{ 
     File file = new File("grades.txt"); 
     Scanner s = new Scanner(file); 


     int maxq1 =0, maxq2 =0, maxq3 =0, maxq4 =0; 
     int minq1 =100, minq2 =100, minq3 = 100, minq4 =100; 
     int proji_max=0, projii_max = 0, projiii_max =0; 
     int proji_min =100, projii_min = 100, projiii_min =100; 

    while(s.hasNext()){ 

     { 

     double q1average = 0.0, q2average = 0.0, q3average = 0.0, q4average = 0.0; 
     double proji = 0.0, projii =0.0, projiii = 0.0; 
     double q1sum = 0.0, q2sum = 0.0, q3sum = 0.0, q4sum = 0.0; 
     double proji_sum = 0.0, projii_sum = 0.0, projiii_sum =0.0; 
     while(s.hasNext()) { 
      String[] split = s.nextLine().split(", "); 

      q1sum += Double.parseDouble(split[1]); // add all first grades 
      q1average++; 

      q2sum += Double.parseDouble(split[2]); // add all first grades 
      q2average++; 

      q3sum += Double.parseDouble(split[3]); // add all first grades 
      q3average++; 

      q4sum += Double.parseDouble(split[4]); // add all first grades 
      q4average++; 

      proji_sum += Double.parseDouble(split[5]); // add all first grades 
      proji++; 

      projii_sum += Double.parseDouble(split[6]); // add all first grades 
      projii++; 

      projiii_sum += Double.parseDouble(split[7]); // add all first grades 
      projiii++; 



      if(Double.parseDouble(split[1]) > maxq1) 
       maxq1 = (int) Double.parseDouble(split[1]); 
      if(Double.parseDouble(split[2]) > maxq2) 
       maxq2 = (int) Double.parseDouble(split[2]); 
      if(Double.parseDouble(split[3]) > maxq3) 
       maxq3 = (int) Double.parseDouble(split[1]); 
      if(Double.parseDouble(split[4]) > maxq4) 
       maxq4 = (int) Double.parseDouble(split[1]); 
      if(Double.parseDouble(split[5]) > proji_max) 
       proji_max = (int) Double.parseDouble(split[1]); 
      if(Double.parseDouble(split[6]) > projii_max) 
       projii_max = (int) Double.parseDouble(split[1]); 
      if(Double.parseDouble(split[7]) > projiii_max) 
       projiii_max = (int) Double.parseDouble(split[1]); 

      if(Double.parseDouble(split[1])< minq1) 
        minq1 = (int) Double.parseDouble(split[1]); 
      if(Double.parseDouble(split[2])< minq2) 
        minq2 = (int) Double.parseDouble(split[2]); 
      if(Double.parseDouble(split[3])< minq3) 
        minq3 = (int) Double.parseDouble(split[3]); 
      if(Double.parseDouble(split[4])< minq4) 
       minq4 = (int) Double.parseDouble(split[4]); 
     } 
     System.out.println(maxq2); 
     System.out.println(minq2); 
     double q1_average = (q1sum/q1average); 
     double q2_average = (q2sum/q2average); 
     double q3_average = (q3sum/q3average); 
     double q4_average = (q4sum/q4average); 
     double p1_average = (proji_sum/proji); 
     double p2_average = (projii_sum/projii); 
     double p3_average = (projiii_sum/projiii); 
    } 



    }}catch(Exception e){ 
     e.printStackTrace(); 
    } 



} 
public void closeFile(){ 
    x.close(); 
} 
} 

ответ

1

Для начала, вы повторно инициализировать maxq1 до 0 каждый раз, вы должны двигаться, где он инициализируется до цикла while.

System.out.println(maxq1); также необходимо переместить после цикл, если вы хотите, чтобы он отображался один раз, а не на каждой итерации цикла.

+0

i, но int maxi = 0 перед циклом while и печать после while, но я все еще не получаю правильный результат. – user3163493

+0

Я заметил, что вы отредактировали свой OP. Это тот код, какой он стоит сейчас? Потому что я не вижу, чтобы maxq1 печатался где-то сейчас. – splrs

+0

Да, я проверял, все ли они работают, после того как я увидела maxq1, но затем я увидел, что maxq2 только что напечатал первый номер – user3163493

1

Move int maxq1 =0; перед временем цикла: в момент, когда вы ее сброс в каждой записи ...

+0

i но int maxi = 0 перед циклом while и печать после цикла while, но я все еще не получаю правильный результат – user3163493

Смежные вопросы