[ 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;
        }
}
[ djura1 @ 11.06.2015. 17:50 ] @
Citat:

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


Kada deliš integer sa integer-om, opet dobijes ineteger :-). Probaj ovako:
Code:

 (float)broj_onih_koji_su_položili/(float)ukupan_broj_studenata


Citat:

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.


Pogledaj funkciju
Code:
String.format()
[ ser_nicky @ 11.06.2015. 18:07 ] @
@Djura1

Hvala najlepše, proradila je prolaznost:)...Sada ću da pogledam funkciju String.format, nadam se da će mi to pomoći da rešim zadatak...Hvala još jednom!
[ ŽIKI @ 11.06.2015. 18:40 ] @
Ukupnu ocenu treba da računaš iz polozili liste, takođe njeno izračunavanje izbaci izvan while petlje...
[ ser_nicky @ 11.06.2015. 18:51 ] @
Hvala Žiki, živi bili ljudi, sad sve radi:)...Evo koda, ako nekome zatreba nešto slično:
P.S. Hvala još jednom
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<polozili.size();i++){
                        ukupnaOcena+=Double.parseDouble(polozili.get(i).getOcena());
                        prosecnaOcena=ukupnaOcena/polozili.size();
                        }
        } 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 = (float)(polozili.size())/(studenti.size())*100;
                                System.out.println("Prolaznost na ispitu: " + prolaznost);
                                System.out.println("Prosecna ocena: " + prosecnaOcena);
        }     
                     
  }