Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ubacivanje brojeva sa fajla u java niz ???

[es] :: Java :: Ubacivanje brojeva sa fajla u java niz ???

[ Pregleda: 4107 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

casperns2
Full Stack Java Web Developer
Novi Sad

Član broj: 288154
Poruke: 227
*.dynamic.sbb.rs.



+45 Profil

icon Ubacivanje brojeva sa fajla u java niz ???26.01.2014. u 13:32 - pre 123 meseci
Cao, za ovaj problem sam se morao javiti, celo jutro pokusavam da resim ali ne ide.
Ak imam fajl ulaz.txt u kom su napisani brojevi i nalazi se u direktoriju gde i projekat , kako da ucitam brojeve iz tog fajla i ubacim ih u neki niz .
Samo citanje i ispisivanje nije problem ali da ih ubacim u niz mi ne ide ...
Evo koda, sve je OK ali poslednji 3. niz nizC je problem

Code:

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

public class Vezbanje 
{
    public static void main(String[] args) 
    {
Scanner sc=new Scanner(System.in);
System.out.println("Koliko zelite clanova niza A?");
int brojA=sc.nextInt();
int[]nizA=new int[brojA];

for(int i=0;i<brojA;i++){
    System.out.print("Unesite "+(i+1)+". broj: ");
nizA[i]=sc.nextInt();
}

int[] nizB=new int[nizA.length];
System.out.print("Clanovi nizaA uvecani za 1: ");
for(int i=0;i<nizA.length;i++){
nizB[i]=nizA[i]+1;
System.out.print(nizB[i]+ " ");
}
try
{
    System.out.println("");
Scanner scan=new Scanner(new File("ulaz.txt"));
while(true)
  if(scan.hasNextInt()){
      int brojElemenata=6;
        int[] nizC=new int[brojElemenata];
        int c=0;
        nizC[c]=scan.nextInt();
        c++;
    System.out.print("Clanovi nizaC su: "+ nizC[c]);
  }
  else
      break;
          }
 catch (FileNotFoundException e){
     e.printStackTrace();
 }
 }


    }


Nisam naisao na slican zadatak i nemam predstavu kako da to ucinim, ali sam pokusao i sada me bas interesuje na koji nacin, ovo sto sam napisao je samo jedna od mogucnosti koju sam probao ali znam da nije OK, mada je najbliza , ne izbaci gresku vec ocita da su svi clanovi niza 0 :)

Ima li neko ideju, znaci ovaj deo koda je jedino problem
Code:
Scanner scan=new Scanner(new File("ulaz.txt"));
while(true)
  if(scan.hasNextInt()){
      int brojElemenata=6;
        int[] nizC=new int[brojElemenata];
        int c=0;
        nizC[c]=scan.nextInt();
        c++;
    System.out.print("Clanovi nizaC su: "+ nizC[c]);
  }
  else
      break;
 
Odgovor na temu

FooLControL
Serbia

Član broj: 168531
Poruke: 74
*.dynamic.isp.telekom.rs.



+8 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???26.01.2014. u 15:43 - pre 123 meseci
Koju ti gresku izbacuje? Garant ti nije dobra putanja do fajla.
 
Odgovor na temu

casperns2
Full Stack Java Web Developer
Novi Sad

Član broj: 288154
Poruke: 227
*.dynamic.sbb.rs.



+45 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???26.01.2014. u 16:49 - pre 123 meseci
Putanja je OK, fajl se nalazi u projektu ove klase, udjem u fajl na isti nacin i ispisem na ekranu brojeve iz fajla ako zelim da ih samo ispisem.
Ali sam hteo da te brojeve ubacim u neki niz i tu nastaje problem, konkretno u ovom slucaju on ne izbacuje nikakvu gresku vec ispise sve dobro ocim poslednjeg niza... ovo je ispis posle pokretanja

Koliko zelite clanova niza A?
5
Unesite 1. broj: 32
Unesite 2. broj: 4
Unesite 3. broj: 1
Unesite 4. broj: 8
Unesite 5. broj: 9
Clanovi nizaA uvecani za 1: 33 5 2 9 10
Clanovi nizaC su: 0Clanovi nizaC su: 0Clanovi nizaC su: 0Clanovi nizaC su: 0Clanovi nizaC su: 0

U poslednjoj liniji treba da izbaci umesto nule brojeve iz fajla (znam da nisam ispis zadnjeg reda najbolje napravio vizuelno), on izbaci uvek 0 , kontam da je izbacio zato sto sam definisao da int c=o , ali sam hteo da stavim da je c polje niza a ne vrednost , i da kako se iscitava naredni broj da se c(polje niza)povecava i tom polju dodeljuje vrednost ucitanog broja... nadam se da razumes sta sam hteo reci:)

Program iscitava brojeve niza samo ih ne dodeljuje i ne zapisuje dobro, na fajlu ima 5 brojeva i on 5 puta ispise istu poruku .Kada sam u fajl stavio 2 broja on ispise dva puta istu poruku. Znaci da cita brojeve iz fajla i dok ih ima ispisuje istu vrednost , nula ,ali ih ne zapisuje u niz...

[Ovu poruku je menjao casperns2 dana 26.01.2014. u 18:01 GMT+1]
 
Odgovor na temu

radoica

Član broj: 12972
Poruke: 158
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???26.01.2014. u 19:30 - pre 123 meseci
Stavi int c=0 ispred while petlje.
 
Odgovor na temu

casperns2
Full Stack Java Web Developer
Novi Sad

Član broj: 288154
Poruke: 227
*.dynamic.sbb.rs.



+45 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???26.01.2014. u 20:54 - pre 123 meseci
Probao sam da stavim ispred while petlje ali potpuno isti rezultat ispisuje ...
 
Odgovor na temu

ŽIKI

Član broj: 57957
Poruke: 145



+41 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???26.01.2014. u 20:59 - pre 123 meseci
Code:
int brojElemenata = 6;
            int[] nizC = new int[brojElemenata];
            int c = 0;
            System.out.print("Clanovi nizaC su: ");
            while(scan.hasNextInt())
                 {
                    nizC[c] = scan.nextInt();
                    System.out.print(nizC[c] + " ");    
                }
    


U principu i tvoj kod bi radio samo da si izbrisao c++;
Uvek sve što može, izbaci van petlje.
 
Odgovor na temu

casperns2
Full Stack Java Web Developer
Novi Sad

Član broj: 288154
Poruke: 227
*.dynamic.sbb.rs.



+45 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???27.01.2014. u 09:45 - pre 123 meseci
Hvala ŽIKI ali na taj nacin ce da ocita brojeve i napise na ekranu brojeve sa fajla ali ih ne sacuvava u nizC . Procita prvi broj i dodeli mu vrednost nizC[0] i iscita ga, zatim procita drugi broj i vrednost polja u nizC[0] zameni sa drugim ucitanim brojem i ispise ga. Niz ne pamti brojeve vec samo menja vrednost prvog polja i ispisuje prvi broj.
Ako stavimo da se ispisuje ceo niz brojeva datog niza videce se da se ocitani brojevi ne sacuvaju u nizu...

Code:
try
    {
        System.out.println("");
    Scanner scan=new Scanner(new File("ulaz.txt"));
    int c=0;
    int brojElemenata=6;
    int[] nizC=new int[brojElemenata];
      while(scan.hasNextInt()){
            nizC[c]=scan.nextInt();
        System.out.print(" Clanovi nizaC su: "+ Arrays.toString(nizC));
      }
              }
     catch (FileNotFoundException e){
         e.printStackTrace();
     }


Posle ovoga ne prijavljuje gresku i brojevi iz fajla 4 5 7 4 su iscitani ali pokaze da brojevi nisu sacuvani .... ovo bude na izlazu:

Clanovi nizaC su: [4, 0, 0, 0, 0, 0]Clanovi nizaC su: [5, 0, 0, 0, 0, 0]Clanovi nizaC su: [7, 0, 0, 0, 0, 0]Clanovi nizaC su: [4, 0, 0, 0, 0, 0]

Mislim da ceo nacin na koji pokusavam da uradim je pogresan ali nemam drugu ideju...
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
..ppoe.dyn.broadband.blic.net.



+62 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???27.01.2014. u 10:31 - pre 123 meseci
Vidi, nema druge nego da dvaput prodjes kroz fajl.

1) U prvoj petlji samo citas scan.hasNextInt() i uvecavas neki brojac.
2) Zatim alociras niz integera prema tom brojacu.
3) Ponovo prolazis kroz fajl i ucitavas elemente niza redom.

Ako zadatak trazi "obican" niz, to je jedino resenje. Druga bi prica bila da je dozvoljena neka klasa koja implementira List interface (npr. ArrayList).

Pozz
 
Odgovor na temu

casperns2
Full Stack Java Web Developer
Novi Sad

Član broj: 288154
Poruke: 227
*.dynamic.sbb.rs.



+45 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???27.01.2014. u 10:44 - pre 123 meseci
Hvala na predlogu, probacu pa javim ako uspem....
 
Odgovor na temu

ŽIKI

Član broj: 57957
Poruke: 145



+41 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???27.01.2014. u 14:05 - pre 123 meseci
Da, nisam lepo pročitao, treba da se uradi ovako kako je Rajko rekao...Nešto ovako po tačkama:

Code:

        Scanner scan = new Scanner(new File("ulaz.txt"));
            Scanner scan1 = new Scanner(new File("ulaz.txt"));
            int brojElemenata=0;
            int x;
    //1)
            while (scan1.hasNextInt()) 
            {
               x = scan1.nextInt();
               brojElemenata ++;
            }

         System.out.println(brojElemenata);    
    //2    
            int[] nizC = new int[brojElemenata];
            int c = 0;
    //3
            for (int j=1; j<=brojElemenata; j++){
            nizC[c]=scan.nextInt();
            c++;
            }
            System.out.print(Arrays.toString(nizC));
    
 
Odgovor na temu

casperns2
Full Stack Java Web Developer
Novi Sad

Član broj: 288154
Poruke: 227
*.dynamic.sbb.rs.



+45 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???28.01.2014. u 21:37 - pre 123 meseci
Hvala ŽIKI i Rajko , radi bas kako treba i tacno onako kako si napisao. Samo jedan detalj mi nije jasan , zasto je moralo da se prave dva citaca scan i scan1 ako ocitavaju isti fajl ...
Ako scan upotrebim u while petlji , a onda i u for petlji...tada mi javi gresku kada naidje na for pelju , ako stavim u bilo koju petlju skan1 umesto scan onda ocita i izvrsi program???
 
Odgovor na temu

nemnesic
nemnesic
Software Developer
Vranje Florida

Moderator
Član broj: 44355
Poruke: 802
2602:306:cda2:bb0:2d44:1301:..



+64 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???28.01.2014. u 21:46 - pre 123 meseci
Ne slazem se bas da moras da citas file 2 puta.
Mozes da procitas jednom i sve da ubacis u Set ili ArrayList

Code:

List myList = new ArrayList();

//ili
Set myset = new HashSet()


i tu mozes lepo da ubacis sve i onda prebacis u Array.
 
Odgovor na temu

casperns2
Full Stack Java Web Developer
Novi Sad

Član broj: 288154
Poruke: 227
*.dynamic.sbb.rs.



+45 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???29.01.2014. u 00:20 - pre 123 meseci
Verovatno moze, pokusao sam par puta sada sa ArrayList cisto iz znatizelje na brzinu u 1h posle ponoci ali nije proslo, jednom je ocitan niz ali ispred ocitanog niza iscitavao je i vrednost null pa ostale brojeve. Ali sigurno moze, hvala na predlogu...
 
Odgovor na temu

nemnesic
nemnesic
Software Developer
Vranje Florida

Moderator
Član broj: 44355
Poruke: 802
*.hsd1.il.comcast.net.



+64 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???29.01.2014. u 02:46 - pre 123 meseci
Evo pogledaj ovo.
Moze naravno da se malo optimizuje ali ovako radi sa ArrayList i ne moras da citas file 2 puta.

http://pastebin.com/sxUdVGSh
 
Odgovor na temu

blekmor
fax
fax

Član broj: 309532
Poruke: 55
*.teol.net.



+30 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???10.02.2014. u 19:08 - pre 123 meseci
Pozdrav,
prvo ću ti reći zašto tvoj program nije radio. Čitanje iz fajla radiš kroz petlju, učitava dok god ima brojeva u fajlu. Sve što si napisao u petlji će se izvršiti svaki put kada se prodje kroz petlju. Tvoja petlja će svaki put (dok god ima brojeva u fajlu) da postavi c = 0, da napravi novi niz od 6 elemenata, da na c-tu (nultu) poziciju tog niza učita broj iz fajla, da poveća c (sada je c = 1) i da ispiše c-ti (prvi element niza). Pošto još nisi ubacio ništa na 1. poziciju u nizu, on će ti ispisati 0. Pažnja : nizovi kreću od 0, a ne od 1.
Program će ti raditi ako izbaciš "c++", zato što će ti tada ispisati 0. elemnt niza, tačno ono što si i upisao iz fajla.
Takav program će da ispiše sve što treba, ali sam prilično siguran da to nije ono što si htio da uradiš.
Ti si htio da napraviš niz koj će da se sastoji od n elemenata, da učitaš tih n elemenata i da ih ispišeš. Ti si ovde za svaki broj iz fajla pravio novi niz i ubacivao ga na poziciju 0.
Svaki prolazak kroz petlju će da ti napravi novi niz, a pored toga će da ti "obriše" stari, zato što gubiš referencu na njega. Znači potrebno je da napraviš niz prije petlje, i da u petlji ubacuješ elemente u niz. Učitaš, ubaciš, povećaš c... Problem je što ti ne znaš unaprijed koliko brojeva imaš u fajlu, tj ne znaš koliki niz treba da napraviš.

Rešenje sa dva skenera će prvo da prodje kroz fajl, da vidi koliko elemenata treba da se upiše u niz, da napravi niz tolike veličine i da ga popuni. Dva skenera su potrebna zato što će prvi da dodje do kraja fajla, a u drugoj petlj treba da ideš od početka fajla. Mogao se iskoristiti jedan skener, ali da se ponovo instancira nakon prve petlje. Prilično sam siguran da postoji neki način da se skener "resetuje", te ga se ne mora ni reinstancirati, no nećemo da cjepidlačimo ;)

Drugo rešenje ti je da koristiš listu (ArrayList npr.). Lista je dinamički tip podataka, dok je niz statički tip podataka. Za sada je zamišljaj kao niz koji ne treba da zna unaprijed koliko će imati elemenata. Napraviš listu (ne daješ joj dimenziju pri instanciranju kao nizu) i onda samo ubacuješ elemente u nju. Problem je što lista nije niz, sa njom je malo komplikovanije raditi. To će ti se razjasniti vremenom.

Treće rešenje ti je da napraviš niz za koji si siguran da je dovoljno veliki da ti stane sve u njega. Ako znaš da su u fajlu nemaš preko 50 brojeva, ti napraviš niz veličine 50, pa ga popunjavaš (ne prolaziš 2 puta kroz fajl nego samo jednom). Ovo je odlika "prljavog" programiranja. Nije baš lijepo da zauzmeš više memorije nego što ti treba, i mnogi programeri se zgražavaju na ovakve konstrukcije, ali je često upravo to najefikasniji način. Ako možeš ograničiti niz, sigurno ti je "jeftinije" da potrošiš malo više memorije nego što treba, nego da potrošiš više vremena za izvršavanje programa(prolazak kroz fajl dva puta). Dizajn algoritama se jako često svede na to da što efikasnije uskladiš memoriju, vrijeme izvršavanja i tačnost rezultata.

Raspisah se mnogo više nego što je trebalo, ali sve ovo ti možda bude koristilo.
 
Odgovor na temu

casperns2
Full Stack Java Web Developer
Novi Sad

Član broj: 288154
Poruke: 227
*.dynamic.sbb.rs.



+45 Profil

icon Re: Ubacivanje brojeva sa fajla u java niz ???10.02.2014. u 21:00 - pre 123 meseci
Hvala Blekmor, predhodni forumasi su mi pomogli oko resenja zadatka a ovo je veoma detaljno i ima korisnih saveta za dalje ucenje koje su mi sada jasniji ... hvala jos jednom na ovako detaljnom odgovoru....
 
Odgovor na temu

[es] :: Java :: Ubacivanje brojeva sa fajla u java niz ???

[ Pregleda: 4107 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.