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! :-)