[java] Program, tokeny, wczytywanie, zapis

0

Mam następujące zdanie:

Należy stworzyć program, w którym użytkownik wczyta dane z pliku o następującym formacie.

nazwamiasta rok2004 rok2005 rok2006 rok2007 rok2008

Tabela może posiadać dowolną ilość wierszy, ale ilość kolumn zawsze pozostaje niezmienna.

Użytkownik dzięki funkcji "przeglądaj" wybierze plik, który ma zostać wczytany i potwierdzi przyciskiem "potwierdź".

Program wczyta dane, użytkownik w oknie programu będzie miał do wyboru trzy kropki (Radio Buttony) wylicz dla rok 2009, wylicz dla rok 2010, wylicz dla rok 2011. Po zaznaczeniu jednej z możliwości i potwierdzeniu operacji klawiszem "wylicz" program wykona dla każdego wiersza tablicy następujące działanie matematyczne:

Dla roku 2009:
(wartośćpola2004) / (wartośćpola2004 + wartośćpola2005 + wartośćpola2006)

Dla roku 2010:
(wartośćpola2005) / (wartośćpola2005 + wartośćpola2006 + wartośćpola2007)

Dla roku 2011:
(wartośćpola2006) / (wartośćpola2006 + wartośćpola2007 + wartośćpola2008)

Po wykonaniu obliczeń użytkownik ponownie korzystając z funkcji "przeglądaj" wybierze plik i klikając na klawisz "zapisz dane" otrzyma plik w formacie

nazwamiasta wynik

I tyle.

Próbowałam robić to na różne sposoby.

Mam już gotowy graficzny projekt programu tzw. GUI.
I działa mi funkcja "przeglądania"
Klawisz "potwierdź" przy wczytywaniu danych niby działa dobrze, pojawiają mi się dane z pliku, robi tokenizację, zmienia dane z typu string na float, ale nie umiem zapisać całej tablicy. Przy wykonywaniu działania oblicza się tylko ostatni wiersz. I nie jestem w stanie sobie z tym dalej poradzić.

Jeżeli chodzi o to "wykropkowane" menu to używam funkcji

if (nazwabuttonu.isSelected)

Proszę poradźcie jak z tym dalej ruszyć.
Bardzo mi zależy, żeby to dokończyć i zrozumieć kod, z góry dziękuję.

Fragment kodu, w którym wczytuję plik i dzielę go na tokeny:

public class Vypocet extends ArrayList {

 public void readFromTextFile(String fileName) {
        this.clear();
        FileReader fr = null;
        try {
            fr = new FileReader(fileName);
            BufferedReader bfr = new BufferedReader(fr);
            String s;
            while ((s = bfr.readLine()) != null) {
                System.out.println(s);
                Miasta m = new Miasta();
                StringTokenizer st = new StringTokenizer(s, "\t");

                //if (st.hasMoreTokens()) o.nazev = ;
                if (st.hasMoreTokens()) m.wartosc04 = Float.parseFloat(st.nextToken());
                if (st.hasMoreTokens()) m.wartosc05 = Float.parseFloat(st.nextToken());
                if (st.hasMoreTokens()) m.wartosc06 = Float.parseFloat(st.nextToken());
                if (st.hasMoreTokens()) m.wartosc07 = Float.parseFloat(st.nextToken());
                if (st.hasMoreTokens()) m.wartosc08 = Float.parseFloat(st.nextToken());
                this.add(m);

            }
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                fr.close();
            } catch (IOException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
        } }
  }

W powyższym kodzie, mam jeszcze problem z wypisywaniem zmiennej string... czyli nazwy danego miasta.

Klasa, w której "przechowuję zmienne:

public class Miasta {

    Dzialania dzialania = new Dzialania();

public float wartosc04;
public float wartosc05;
public float wartosc06;
public float wartosc07;
public float wartosc08;

}

Z góry dziękuję wszystkim za pomoc i rady! :-)

0

W kodzie jeszcze zapomniałam zmienić nazwy klasy... zamiast Vypocet ma byc Dzialania. :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0