[ ser_nicky @ 11.06.2015. 16:28 ] @
Pozdrav svima, radim jedan školski zadatak, koji glasi: Realizovati Java aplikaciju koja iz fajla koji se zadaje na ulazu studenti.txt u kome se nalazi spisak studenata koji su položili predmet, čita sve studente i njihove ocene i na standardnom izlazu ispisuje sve studente koji su položili ispit, sortirane u abecednom rastućem redosledu, izračunava prosečnu ocenu i procenat prolaznosti na ispitu. Pretpostaviti da se u fajlu zapis o jednom studentu piše u jednom redu, u formatu: ime prezime ocena, sa po jednim razmakom između. Napravio sam fajl studenti.txt iz koga se lepo učitavaju podaci i pune se liste (imam dve liste: jedna je studenti, koja sadrži podatke o svim studentima; druga je položili, koja sadrži podatke samo o onim studentima koji su položili). Međutim, kada pokušam da izračunam i ispišem prolaznost kao broj_onih_koji_su_položili/ukupan_broj_studenata, dobijem 0 kao rezultat, a ne znam zašto:(...Takođe, ukoliko neko ima sugestiju kako da ispišem prosečnu ocenu onih koji su položili (ok, jasno mi je da treba da saberem sve ocene iz liste položili i da tu vrednost podelim sa ukupnim brojem članova liste), ali ne znam kako to da primenim. U nastavku je kod koji sam do sada uradio. Hvala svima unapred. Code: package studentisort; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Program { public static void main(String[] args) { List<Student> studenti = new ArrayList<Student>(); List<Student> polozili = new ArrayList<Student>(); FileInputStream ulaz = null; double prosecnaOcena=0; double ukupnaOcena=0; double prolaznost=0; try { ulaz = new FileInputStream("studenti.txt"); BufferedReader bafer = new BufferedReader(new InputStreamReader(ulaz)); String linija = ""; String[] temp = linija.split(" "); while ((linija = bafer.readLine()) != null) { temp = linija.split(" "); int ocena = Integer.parseInt(temp[2]); studenti.add(new Student(temp[0], temp[1], temp[2])); if(ocena>5) polozili.add(new Student(temp[0], temp[1], temp[2])); for(int i=0;i<studenti.size();i++) { ukupnaOcena+=Double.parseDouble(studenti.get(i).getOcena()); } } } catch (IOException e) {} finally { try { ulaz.close(); } catch ( Exception ignore ) {} } Collections.sort(polozili, new Comparator<Student>() { @Override public int compare(Student s1, Student s2) { return s1.ime.compareTo(s2.ime); } }); for(Student s1: polozili){ System.out.println(s1.getIme() + " " + s1.getPrezime() + " " + s1.getOcena()); } prolaznost = (polozili.size())/(studenti.size()); System.out.println(prolaznost); } } I klasa Student... Code: package studentisort; public class Student { String ime; String prezime; String ocena; public Student(String ime, String prezime, String ocena){ this.ime=ime; this.prezime=prezime; this.ocena=ocena; } public String getIme(){ return ime; } public String getPrezime(){ return prezime; } public String getOcena(){ return ocena; } public String toString(){ return ime + " " + prezime + " " + ocena; } } |