Hei!
Voisiko joku valaista vähän, miten Javassa toteutetaan
muuttujien syöttö näppäimistöltä. Tuntuu minusta varsin
kimurantilta puuhalta.
Useimmissa muissa kielissä tämä on melko helppoa:
cin>>muuttuja; //C++
Readln(muuttuja); {Pascal}
INPUT muuttuja 'Basic
Löytyisikö sopivaa kirjallisuutta Javan opiskeluun?
Esimerkiksi kirjassa: Mika Vesterholm - Jorma Kyppö
Java-ohjelmointi, tämä asia on kierretty antamalla pieni
apuluokka nimeltä Lukija. Varsinainen "asian ydin" on
jätetty selittämättä.
Varsinkin desimaalilukujen(float, double) syöttäminen
näyttäisi hankalalta.
Ei se nyt niin vaikeaa ole. Javassa on samanlainen virta-ajattelutapa kuin C++:ssa. Virtoihin vain ei pääse suoraan käsiksi, vaan tarvitaan erillinen Reader-luokka, joka hoitaa matalan tason asiat ja tarjoaa kätevät palvelut tiedon hakemiseksi.
import java.io.*; public class Summain { public static void main(String args[]) { float eka, toka; // Luodaan BufferedReader, joka lukee stdin-virtaa yhtä merkkiä pidemmissä pätkissä // Ollakseni rehellinen, en ymmärrä, miksi noita Readereita tarvitaan kaksi, mutta näin se nyt vain on BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); // try-catch lohko sen varalta, että käyttäjä yrittää syöttää jotain hassua try { System.out.println("Anna desimaaliluku"); // Luetaan rivi stdinistä, ts. kunnes käyttäjä painaa entteriä eka = Float.parseFloat(stdin.readLine()); System.out.println("Anna toinen"); // Toinen toka = Float.parseFloat(stdin.readLine()); System.out.println("Lukujen summa on " + (eka + toka)); } catch(Exception e) { // Virheiden käsittely tänne System.out.println("Anna kunnollinen luku >_<"); e.printStackTrace(); } } }
Sitten on vielä tällainen Arto Wiklan valmis luokka, joka pikaisen tutkimisen perusteella näyttäisi monipuolisemmalta: http://www.cs.helsinki.fi/u/wikla/JohdOhj/
Todettu käteväksi
Hei!
Kiitokset Blazelle ja Tompulle hyvistä ohjeista.
Kuitenkin, vaikka koodasin Blazen hyvän ja valaisevan
esimerkin sellaisenaan, saan ohjelmaa koodattaessa
virheilmoituksen:
"Summain.java": cannot resolve symbol: class InputStreamReader in class Summain.
Minulla om JBuilder, jossa on JDK versio 1.42_01 -b06.
Johtuneeko epäonnistuminen versiosta?
Tai en ole varma saako projektin nimi olla sama kuin
luokan nimi. Tässä olen käyttänyt Project nama: Summain
Class name: Summain?
toiper-4 kirjoitti:
saan ohjelmaa koodattaessa
virheilmoituksen:
"Summain.java": cannot resolve symbol: class InputStreamReader in class Summain.Minulla om JBuilder, jossa on JDK versio 1.42_01 -b06.
Johtuneeko epäonnistuminen versiosta?
Ihankuin JBuilder ei hoksaisi tuota import-lausetta tuolla alussa. Katsoppa, ettei JBuilderissä pidä kirjastoja tuoda mukaan jostain GUI-härpäkkeestä.
JDK:n versiosta homma ei oo kiinni, InputStreamReader on ollu mukana alusta asti.
toiper-4 kirjoitti:
Tai en ole varma saako projektin nimi olla sama kuin
luokan nimi. Tässä olen käyttänyt Project nama: Summain
Class name: Summain?
Tuostapa en osaa sanoa, en oo käyttäny JBuilderia.
Hei Blaze!
Nyt onnistuu. Kiitti vielä kerran.
Aihe on jo aika vanha, joten et voi enää vastata siihen.