banjalukaforum.com

Dobrodošli na banjalukaforum.com
Danas je 17 Jun 2025, 04:16

Sva vremena su u UTC [ DST ]




Započni novu temu Odgovori na temu  [ 11 Posta ] 
Autoru Poruka
 Tema posta: Java sortiranje
PostPoslato: 10 Mar 2010, 11:10 
OffLine
Voajer
Voajer

Pridružio se: 10 Mar 2010, 11:06
Postovi: 6
Pozdrav, ako neko moze da mi pomogne sa sortiranjem slijedeceg texta koji je upisan u fajl.

Tim: Sarajevo Bodova: 7.0
Tim: �eljo Bodova: 2.0
Tim: Vele� Bodova: 3.0
Tim: �elik Bodova: 5.0
Tim: Travnik Bodova: 3.0
Tim: Zrinjski Bodova: 3.0

rezultat sortiranja bi bila tabela poredana po bodovima.

Unaprijed se zahvaljujem na odgovorima.


Vrh
 Profil  
 
 Tema posta: Re: Java sortiranje
PostPoslato: 10 Mar 2010, 13:50 
OffLine
Stara kuka
Stara kuka
Korisnikov avatar

Pridružio se: 03 Maj 2008, 10:50
Postovi: 6643
Pozdrav mehom,

Je li ti to za skolu/faks treba? Predlazem da postavis ovdje svoje rijesenje pa ce ti ljudi dati neke sugestije.

_________________
You smug-faced crowds with kindling eye
Who cheer when soldier lads march by,
Sneak home and pray you'll never know
The hell where youth and laughter go.


Vrh
 Profil  
 
 Tema posta: Re: Java sortiranje
PostPoslato: 10 Mar 2010, 14:05 
OffLine
Voajer
Voajer

Pridružio se: 10 Mar 2010, 11:06
Postovi: 6
Pozdrav Hristov, hvala na sugestijama, ja sam probao ovo ali ne radi:
public void Tabela() throws Exception
{
File f = new File("Tabela.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);

StringBuffer sb = new StringBuffer();
String eachLine = br.readLine();

while (eachLine != null) {
sb.append(eachLine);
sb.append("\n");
eachLine = br.readLine();
}
//
{

String [] testNiz = {sb.toString()};
Arrays.sort(testNiz);
System.out.println(Arrays.toString(testNiz));
}


Vrh
 Profil  
 
 Tema posta: Re: Java sortiranje
PostPoslato: 10 Mar 2010, 14:10 
OffLine
Stara kuka
Stara kuka
Korisnikov avatar

Pridružio se: 03 Maj 2008, 10:50
Postovi: 6643
Kod ubacuj u 'Code' tag, nalazi se u lajsni sa tagovima za formatiranje, iznad polja za pisanje posta. Bice citljivije.

Evo ti rijesenja:

Kod:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

public class Sort {
   public static void main(String[] args) throws Exception {
        File file = new File("text.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        ArrayList<String> lines = new ArrayList<String>(10);
       
        String line;
        while((line = reader.readLine()) != null) {
           lines.add(line);
        }
       
        String[] sorted = lines.toArray(new String[lines.size()]);
        sortRawTeamData(sorted, true);
       
        for(int i = 0; i < sorted.length; i++) {
           System.out.println(sorted[i]);
        }
   }
   
   private static void sortRawTeamData(String[] strings, final boolean ascending) {
        Arrays.sort(strings, new Comparator<String>() {
         public int compare(String line1, String line2) {
            String seg1 = line1.substring(line1.lastIndexOf(':') + 1).trim();
            String seg2 = line2.substring(line2.lastIndexOf(':') + 1).trim();
            double p1 = Double.parseDouble(seg1);
            double p2 = Double.parseDouble(seg2);
            return (int)((p1 - p2) * (ascending? 1:-1));
         }
        });
   }
}



Output je:

Kod:
Tim: Zeljo Bodova: 2.0
Tim: Velez Bodova: 3.0
Tim: Travnik Bodova: 3.0
Tim: Zrinjski Bodova: 3.0
Tim: Celik Bodova: 5.0
Tim: Sarajevo Bodova: 7.0


Jesi li to trebao?

_________________
You smug-faced crowds with kindling eye
Who cheer when soldier lads march by,
Sneak home and pray you'll never know
The hell where youth and laughter go.


Vrh
 Profil  
 
 Tema posta: Re: Java sortiranje
PostPoslato: 10 Mar 2010, 14:19 
OffLine
Voajer
Voajer

Pridružio se: 10 Mar 2010, 11:06
Postovi: 6
Ko zna, zna, da to je to s tim da je ovdje output od najmanjeg ka najvecem a trebalo bi obratno.


Vrh
 Profil  
 
 Tema posta: Re: Java sortiranje
PostPoslato: 10 Mar 2010, 14:27 
OffLine
Stara kuka
Stara kuka
Korisnikov avatar

Pridružio se: 03 Maj 2008, 10:50
Postovi: 6643
Onda samo ubacis 'false' umjesto 'true' kao argument pri pozivu metode sortRawTeamData.

Super, drago mi je da sam ti pomogao.

_________________
You smug-faced crowds with kindling eye
Who cheer when soldier lads march by,
Sneak home and pray you'll never know
The hell where youth and laughter go.


Vrh
 Profil  
 
 Tema posta: Re: Java sortiranje
PostPoslato: 10 Mar 2010, 14:51 
OffLine
Voajer
Voajer

Pridružio se: 10 Mar 2010, 11:06
Postovi: 6
Zahvaljujem ti se na svesrdnoj pomoci, ali ja sam izgleda pukao. Postavicu cijeli kod pa te molim ako imas vremena da mi kazes gdje grijesim.
pozzz
Kod:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package fudbalskirezultati;
import java.io.*;
import java.util.*;

/**
*
* @author
*/
public class Main {



public static void main(String[] args)  throws Exception
    {
      char izbor; //varijabla zaunos izbora...
       Scanner scanner = new Scanner(System.in);

   do
       {
         System.out.println("\n\n\n********* F U D B A L **********");
         System.out.println("");
         System.out.println("1)Unos novog tima");
         System.out.println("2)Unos novog rezultata");
         System.out.println("3)Prikaz tabele");
         System.out.println("x)Izlazizprograma");
         System.out.println("");
         System.out.println("***************************************");

         String tString = scanner.next();
         izbor = tString.charAt(0);

         Main vd = new Main();

         switch(izbor)
          {
//unos novog tima
                            case '1':
             {
               vd.UnosNovogTima();
               break;
             }
//unos rezultata
         case '2':
             {
               vd.UnosNovogRezultata();
               break;
             }
// prikaz tabele
                        case '3':
             {
               vd.Tabela();
               break;
             }
//izlaz
         case 'x':
             {
               System.out.println("Izlaz iz programa...");
               break;
             }
         default:
             {
               System.out.print("Unijeli ste pogrešan izbor, pokušajte ponovo.  \n");
break;
             }
          }
      }while(izbor != 'x');
   }

   public boolean ProvjeraDaLiElementPostoji(String file, String element)
    {
      boolean element_postoji = false;

      FileInputStream fin;
      DataInputStream in;
                BufferedReader br;

      String postojeci_element;

      try
      {
      fin = new FileInputStream(file);
      in = new DataInputStream(fin);
                br = new BufferedReader(new InputStreamReader(in));

// citaj fajl liniju po liniju
      while ((postojeci_element = br.readLine()) != null)
      {
// Ako se element pronađe postavi varijablu na true...
         if(postojeci_element.equals(element))
            element_postoji = true;
      }
      in.close();
      }
//Ako se desi greška pri čitanju fajla...
      catch (IOException e)
      {
         System.err.println("Greška pri čitanju fajla: " + file);
         System.exit(-1);
      }
//ako je element pronađen vrati true, inače vrati false...
      return element_postoji;
   }
//Prije unosa rezultata timova, potrebno je unijeti timove koji učestvuju...
   public void UnosNovogTima()
    {
       Scanner scanner = new Scanner(System.in);

      System.out.println("\nUnesite naziv Tima:");
      String naziv_tima = scanner.nextLine();
      System.out.println("Unesite pocetni broj bodova:"); // podrazumjevano je 0
      String broj_bodova = scanner.nextLine();

      //provjera da li tim već postoji...
      //ako postoji samo promijeni liniju i dodaj nove bodove..
      boolean artikal_postoji = false;

      try
      {
         FileReader fr = new FileReader("Tabela.txt");
      BufferedReader br = new BufferedReader(fr);

   final String NEW_LINE = System.getProperty("line.separator");
      StringBuffer sb = new StringBuffer();
          String line;

          Float nova_kolicina;
                    Float stara_kolicina;

                    // čitaj fajl liniju po liniju...
         while ((line = br.readLine()) != null)
         {
            // Ako pronađe tim samo povećaj bodove...
            if(line.contains(naziv_tima + " Bodova: "))
            {
               stara_kolicina = Float.valueOf(line.replace("Tim: " + naziv_tima + " Bodova: ", ""));
               nova_kolicina = stara_kolicina + Float.valueOf(broj_bodova);
               sb.append("Tim: " + naziv_tima + " Bodova: " + Float.toString(nova_kolicina));
         sb.append(NEW_LINE);

         artikal_postoji = true;
            }
            else
            {
               sb.append(line);
               sb.append(NEW_LINE);
            }
         }
         //nakon sto je procitan cijeli fajl i nije pronadjen tim, radi se o novom timu...
         //upisi novu liniju u buffer a kasnije u fajl Tabela.txt...
         if(artikal_postoji == false)
         {
            sb.append("Tim: " + naziv_tima + " Bodova: " + broj_bodova);
            sb.append(NEW_LINE);
         }

         fr.close();

         //Upisi sadrzaj buffera nazad u Tabela.txt...
   PrintWriter pw= new PrintWriter(new FileWriter("Tabela.txt"));
      pw.print(sb.toString());
      pw.close();
      }
      catch (FileNotFoundException ex) // ako fajl ne postoji...
       {
   ex.printStackTrace();
       }
   catch (IOException ex) //ako je došlo do greške prilikom upisa u fajl...
       {
   ex.printStackTrace();
       }
      System.out.println("Tim: " + naziv_tima.trim() + " i početni bodovi, su uspješno unešeni.\n");
   }

   public void UnosNovogRezultata()
    {
       Scanner scanner = new Scanner(System.in);

      System.out.println("\nUnesite naziv tima1:");
      String tim1 = scanner.nextLine();
      System.out.println("\nUnesite naziv tima2:");
      String tim2 = scanner.nextLine();
      System.out.println("Unesite broj golova tim1:");
      String g1 = scanner.nextLine();
      System.out.println("Unesite broj golova tim2:");
      String g2 = scanner.nextLine();

      //provjera da li timovi vec postoje...
      //ako postoje samo promijeniti liniju i dodati bodove...
      boolean artikal_postoji = false;
                {
// potrebno je sting pretvoriti u integer radi > i < koje ne radi u stringu :))))
                    int r1 = Integer.parseInt(g1);
                    int r2 = Integer.parseInt(g2);
                    if(r1<r2)
                    {
                        r1=0;
                        r2=3;
                    }
                    else
                    {
                        if(r1>r2)
                        {
                            r1=3;
                            r2=0;
                        }
                        else
                        {
                            r1=1;
                            r2=1;
                        }
                    }


// vrati u string...
                String bod1 ;
                String bod2 ;
                bod1=Float.toString(r1);
                bod2=Float.toString(r2);
      try
      {
         FileReader fr = new FileReader("Tabela.txt");
                        BufferedReader br = new BufferedReader(fr);

   final String NEW_LINE = System.getProperty("line.separator");
      StringBuffer sb = new StringBuffer();
          String line;

          Float novi_bodovi;
                    Float stari_bodovi;
                    Float BodPrije;
                    Float BodPoslije;

                        // čitaj fajl liniju po liniju...
         while ((line = br.readLine()) != null)
         {
            // Ako se tim pronađe samo povecaj broj bodova...
            if(line.contains(tim1 + " Bodova: "))
            {
               stari_bodovi = Float.valueOf(line.replace("Tim: " + tim1 + " Bodova: ", ""));
               novi_bodovi = stari_bodovi + Float.valueOf(bod1);
               sb.append("Tim: " + tim1 + " Bodova: " + Float.toString(novi_bodovi));
         sb.append(NEW_LINE);
                                }
                        else if (line.contains(tim2 + " Bodova: "))
                        {
                                      BodPrije = Float.valueOf(line.replace("Tim: " + tim2 + " Bodova: ", ""));
               BodPoslije = BodPrije + Float.valueOf(bod2);
               sb.append("Tim: " + tim2 + " Bodova: " + Float.toString(BodPoslije));
         sb.append(NEW_LINE);
                       
         artikal_postoji = true;
            }
            else

            {
               sb.append(line);
               sb.append(NEW_LINE);
            }
                        }
         //ako nakon sto je procitan cijeli fajl nije pronadjen tim, radi se o novom timu (imaće dupli unos tima)...
         //upisi novu liniju u buffer i kasnije u fajl...

         if(artikal_postoji == false)
         {
            sb.append("Tim: " + tim1 + " Bodova: " + bod1);
            sb.append(NEW_LINE);
//
                               
            sb.append("Tim: " + tim2 + " Bodova: " + bod2);
            sb.append(NEW_LINE);

         }

         fr.close();

         // Upiši buffer nazad u fajl...
   PrintWriter pw= new PrintWriter(new FileWriter("Tabela.txt"));
      pw.print(sb.toString());
      pw.close();
      }
                       
// Izuzetci
                catch (FileNotFoundException ex) // ako fajl ne postoji...
       {
   ex.printStackTrace();
       }
   catch (IOException ex) //ako je došlo do greške prilikom upisa u fajl...
       {
   ex.printStackTrace();
       }
      System.out.println("Utakmica: " + tim1.trim() +":"+ tim2.trim()+ ", je uspješno ažurirana.\n");
   

        }
        }
// tabela sa bodovima...

        public void Tabela() throws Exception {

        File file = new File("Tabela.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        ArrayList<String> lines = new ArrayList<String>(10);

        String line;
        while((line = reader.readLine()) != null) {
           lines.add(line);
        }

        String[] sorted = lines.toArray(new String[lines.size()]);
        sortRawTeamData(sorted, true);

        for(int i = 0; i < sorted.length; i++) {
           System.out.println(sorted[i]);
        }
   }

   private void sortRawTeamData(String[] strings, final boolean ascending) {
        Arrays.sort(strings, new Comparator<String>() {
         public int compare(String line1, String line2) {
            String seg1 = line1.substring(line1.lastIndexOf(':') + 1).trim();
            String seg2 = line2.substring(line2.lastIndexOf(':') + 1).trim();
            double p1 = Double.parseDouble(seg1);
            double p2 = Double.parseDouble(seg2);
            return (int)((p1 - p2) * (ascending? 1:-1));
         }
        });
   }
}


Vrh
 Profil  
 
 Tema posta: Re: Java sortiranje
PostPoslato: 10 Mar 2010, 15:05 
OffLine
Voajer
Voajer

Pridružio se: 10 Mar 2010, 11:06
Postovi: 6
Meni javlja slijedecu poruku, cak i kad kreiram novi projekt i zalijepim tvoj kod:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
at java.lang.Double.parseDouble(Double.java:510)
at Sort$1.compare(Sort.java:33)
at Sort$1.compare(Sort.java:29)
at java.util.Arrays.mergeSort(Arrays.java:1270)
at java.util.Arrays.mergeSort(Arrays.java:1281)
at java.util.Arrays.sort(Arrays.java:1210)
at Sort.sortRawTeamData(Sort.java:29)
at Sort.main(Sort.java:21)
Java Result: 1


Vrh
 Profil  
 
 Tema posta: Re: Java sortiranje
PostPoslato: 10 Mar 2010, 15:06 
OffLine
Stara kuka
Stara kuka
Korisnikov avatar

Pridružio se: 03 Maj 2008, 10:50
Postovi: 6643
Izgleda da format fajla nije u redu. Svaki red se mora zavrsavati sa dvotackom, iza koje slijedi decimalni broj. Kod tebe izgleda iza zadnje dvotacke u barem jednom redu nema nikakvog broja bodova.

Uradi slijedece: u metodi sortRawTeamData napravi petlju na variabli strings i izbaci sve vrijednosti i vidjeces koji red nema dvotacku i broj bodova.

Ili pogledaj u fajlu sta ne stima.

_________________
You smug-faced crowds with kindling eye
Who cheer when soldier lads march by,
Sneak home and pray you'll never know
The hell where youth and laughter go.


Vrh
 Profil  
 
 Tema posta: Re: Java sortiranje
PostPoslato: 16 Mar 2010, 07:50 
OffLine
Voajer
Voajer

Pridružio se: 10 Mar 2010, 11:06
Postovi: 6
Kao sto rekoh ko zna zna, bio je jedan prazan red u fajlu. Sada sve radi kako treba. Hvala ti jos jednom na pomoci.

LP


Vrh
 Profil  
 
 Tema posta: Re: Java sortiranje
PostPoslato: 17 Mar 2010, 15:58 
OffLine
Stara kuka
Stara kuka
Korisnikov avatar

Pridružio se: 03 Maj 2008, 10:50
Postovi: 6643
Nema na cemu, i drugi put!

_________________
You smug-faced crowds with kindling eye
Who cheer when soldier lads march by,
Sneak home and pray you'll never know
The hell where youth and laughter go.


Vrh
 Profil  
 
Prikaži postove u poslednjih:  Poređaj po  
Započni novu temu Odgovori na temu  [ 11 Posta ] 

Sva vremena su u UTC [ DST ]


Ko je OnLine

Korisnici koji su trenutno na forumu: Nema registrovanih korisnika i 1 gost


Ne možete postavljati nove teme u ovom forumu
Ne možete odgovarati na teme u ovom forumu
Ne možete monjati vaše postove u ovom forumu
Ne možete brisati vaše postove u ovom forumu
Ne možete slati prikačene fajlove u ovom forumu

Pronađi:
Idi na:  
Powered by phpBB® Forum Software © phpBB Group
Hosting BitLab
Prevod - www.CyberCom.rs