import java.io.ByteArrayOutputStream; import java.io.InputStream; import javax.microedition.io.Connector; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.List; import javax.microedition.lcdui.StringItem; import javax.microedition.lcdui.TextField; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class Eksam extends MIDlet implements CommandListener { TextField Sisend = new TextField("Sisend:", "", 5, TextField.NUMERIC); String[] suund = { "EEK -> valuuta", "valuuta -> EEK" }; List LSuunad = new List("Konvertimise suund:", List.EXCLUSIVE, suund, null); List LValuutad; Form f = new Form("Valuutakalkulaator"); StringItem KonvSuund = new StringItem("Konv.suund:", ""); StringItem ValitudValuuta = new StringItem("Valuuta:", ""); StringItem Tulemus = new StringItem("Tulemus:", ""); Command c1 = new Command("Kalkuleeri", Command.SCREEN, 1); Command c2 = new Command("Choseeri valuuta", Command.SCREEN, 1); Command c2a = new Command("Choseeritud", Command.SCREEN, 1); Command c3 = new Command("Choseeri suund", Command.SCREEN, 1); Command c3a = new Command("Choseeritud", Command.SCREEN, 1); Command c4 = new Command("Refresheeri", Command.SCREEN, 1); Command c5 = new Command("Exiteeri", Command.EXIT, 1); String Valuutad; int Kurss; public String LaadiAndmed() { try { String aadress = "http://www.tpu.ee/~vvardja/valuuta.txt"; InputStream sisse = Connector.openInputStream(aadress); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int arv = sisse.read(); while (arv != -1) { // Laseme läbi ainult märgid, mis kuuluvad hulka [0-9A-Z] if ((arv >= 65 && arv <= 90) || (arv >= 48 && arv <= 57)) baos.write(arv); arv = sisse.read(); } byte[] b = baos.toByteArray(); // L6ikame tulemustest va"lja valuutade nimekirja String Valuutad = new String(b); String[] ValuutaList = new String[Valuutad.length() / 7]; int Koht = 0; // Iga seitsme baidi tagant algab uus kirje for (int i = 0; i < Valuutad.length(); i++) { if (i % 7 == 0) ValuutaList[Koht++] = Valuutad.substring(i, i + 3); } // Tekitame List'i ja seame List'i külge Command'i ja CommandListener'i LValuutad = new List("Valuuta:", List.EXCLUSIVE, ValuutaList, null); LValuutad.addCommand(c2a); LValuutad.setCommandListener(this); return Valuutad; } catch (Exception e) { e.printStackTrace(); } return null; } void Kalkuleeri() { // Kui k6ik vajalikud sisendid pole sisestatud, siis ei saa arvutada! if (Sisend.getString().length() == 0 || KonvSuund.getText().length() == 0 || ValitudValuuta.getText().length() == 0) return; // Otsime stringist meie valuuta nime, tagastame seejärel sellele // nimele järgneva 4-baidise stringi ja konverdime selle arvuks int kurss = Valuutad.indexOf(ValitudValuuta.getText()) + 3; kurss = Integer.parseInt(Valuutad.substring(kurss, kurss + 4)); int arv = Integer.parseInt(Sisend.getString()) * 100; // EEK'id korrutame 100'ga paar rida eespool. Valuutakursid on juba // veebi pool 100'ga korrutatud. // EEK -> valuuta konvertimine töötab ilma keemiata. // Valuuta -> EEK konvertimise puhul tuleb tulemus 10000'ga jagada. if (KonvSuund.getText().equals("EEK -> valuuta")) arv = arv / kurss; else arv = arv * kurss / 10000; Tulemus.setText(String.valueOf(arv)); } // Ekraanivormi tekitamine public Eksam() { Valuutad = LaadiAndmed(); f.append(Sisend); f.append(KonvSuund); f.append(ValitudValuuta); f.append(Tulemus); f.addCommand(c1); f.addCommand(c3); f.addCommand(c2); f.addCommand(c4); f.addCommand(c5); f.setCommandListener(this); LSuunad.addCommand(c3a); LSuunad.setCommandListener(this); Display.getDisplay(this).setCurrent(f); } public void commandAction(Command arg0, Displayable arg1) { // Kalkuleeri if (arg0 == c1) { Kalkuleeri(); } // Näita valuutade nimekirja if (arg0 == c2) { Display.getDisplay(this).setCurrent(LValuutad); } // Valuuta valitud if (arg0 == c2a) { ValitudValuuta.setText( LValuutad.getString(LValuutad.getSelectedIndex())); Display.getDisplay(this).setCurrent(f); } // Näita konvertimise suundade nimekirja if (arg0 == c3) { Display.getDisplay(this).setCurrent(LSuunad); } // Konvertimise suund valitud if (arg0 == c3a) { KonvSuund.setText(LSuunad.getString(LSuunad.getSelectedIndex())); Display.getDisplay(this).setCurrent(f); } // Refresheeri valuutade nimekirja serverist if (arg0 == c4) { Valuutad = LaadiAndmed(); ValitudValuuta.setText(""); KonvSuund.setText(""); Tulemus.setText(""); } // Eksit if (arg0 == c5) { notifyDestroyed(); } } protected void startApp() throws MIDletStateChangeException { } protected void pauseApp() { } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } }