Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem JAVA přepsání hodnoty prvku pole

Dobrý den,
pokouším se naprogramovat jednoduchý program v javě, ale sekl jsem se na jendom problému.
Ve třídě mám vytvořené pole s 10 prvky. Potřeboval bych přepsat jeden prvek pomocí metody, je to možné?
Díky, stanley777.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
pole[index_prvku] = prvek; Jsi si jistý, že chápeš jak fungují pole?
Wikan 21.05.2013 10:56
Wikan
Tak jsem si hodnoty dal do textového souboru na řádky. Mám vytaženou hodnotu, kterou potřebuju přeps…
Stanley777 29.05.2013 13:23
Stanley777
Načíst z txt, upravit a opět do txt zapsat se stejnou datovou strukturou jako původně. EDIT: na čte…
freez2 29.05.2013 13:25
freez2
Když jsem se to pokoušel přepsat, tak mi v souboru zůstal pouze text, kterým jsem chtěl přepsat jeno…
Stanley777 29.05.2013 13:56
Stanley777
Musíš načíst úplně všechno a také úplně všechno zapsat. Texťáky nefungují tak, že načteš jen prostře…
freez2 29.05.2013 13:57
freez2
Zkusil jsem to s tím polem a nevypsal se mi žádný prvek, všechny byly null... :( stanley777
Stanley777 29.05.2013 19:44
Stanley777
Jak jsi to načítal a jak zapisoval?
freez2 29.05.2013 19:45
freez2
private String[] radky = new String[9]; // deklarace a inicializace pole s kurzy měn public String… nový
Stanley777 29.05.2013 19:50
Stanley777
Přepsal bych to na něco následujícího... public void ZmenKurzNakup(double castka, int mena) throws… poslední
freez2 29.05.2013 20:01
freez2

Když jsem se to pokoušel přepsat, tak mi v souboru zůstal pouze text, kterým jsem chtěl přepsat jenom ten jeden řetězec.

public String ZmenKurzNakup(double castka, int mena) throws IOException
    {
            FileInputStream fstream = new FileInputStream("kurzy.txt");
            DataInputStream vstup = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(vstup));
            String castkas = String.valueOf(castka);
            String strLine = null;
            int i = 0;           
            while(i != mena+1)
            {
                strLine = br.readLine();
                i++;
            }
            String novy = strLine.replaceAll(strLine, castkas);
            
            vstup.close();
            return castkas;

Teď jsem se v tom ztratil a je z toho nějaká hatmatilka, kteerá nefunguje :/
stanley777

Musíš načíst úplně všechno a také úplně všechno zapsat. Texťáky nefungují tak, že načteš jen prostřední řádku a pak zapíšeš jen prostřední řádku - načíst vše, zapsat vše.

EDIT:
Můžeš si načíst celý texťák do pole (co řádka, to buňka v poli) a pak měnit hodnotu na příslušném místě a poté opět celé pole vypsat do texťáku (co buňka, to řádka).
Obě akce jsou velmi krátké cykly...

private String[] radky = new String[9]; // deklarace a inicializace pole s kurzy měn
public String ZmenKurzNakup(double castka, int mena) throws IOException
    {
            FileInputStream fstream = new FileInputStream("kurzy.txt");
            DataInputStream vstup = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(vstup));
            BufferedWriter bw = new BufferedWriter(new FileWriter ("kurzy.txt"));
            String castkas = String.valueOf(castka);
            String radek;
            String strLine = null;
            int x = 0;
            int i = 0; 
            int a = 0;
            
            while ((radek = br.readLine()) != null)   {
            radky[x]=radek;
            x++;
            
            }
            while(i != mena+1)
            {
                strLine = br.readLine();
                i++;
                radky[i]=strLine;
            }

            while(a < 10)
            {
                bw.write(radky[i]);
                a++;
                
            }
            
            
            bw.close();
            vstup.close();
}

Přepsal bych to na něco následujícího...

public void ZmenKurzNakup(double castka, int mena) throws IOException
    {
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("kurzy.txt")));
            
            String radek;
            int x = 0;
            int i = 0; 
            
            //nacteni 9 radek
            while ((radek = br.readLine()) != null)   {
            	radky[x] = radek;
            	x++;
            }
            br.close(); //zavreni cteni
            
            while(i != mena+1){
            	radky[i] = castka+"";   //tady pocitam, ze chces na index 'i' ulozit tu novou castku, takze:
            }

            BufferedWriter bw = new BufferedWriter(new FileWriter ("kurzy.txt"));

            for(i = 0 ; i < radky.length ; i++){
            	bw.write(radky[i]); //zapsani vsech castek vcetne upraveny castky
            	bw.write("\n"); //odradkovani
            }
            
            
            bw.close(); //zavreni zapisu
      }

Nezapomeň, že pokud načítáš ze souboru a poté do něj chceš opět zapisovat, musíš ten čtecí buffer uzavřít PŘED TÍM, než začneš zapisovat. Po dokončení zápisu opět uzavřít zapisovací buffer.

Zpět do poradny Odpovědět na původní otázku Nahoru