Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Javan näppäimistöltä

toiper-4 [08.08.2006 16:38:39]

#

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.

Blaze [08.08.2006 17:39:57]

#

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();
		}
	}
}

Tomppu [09.08.2006 00:26:49]

#

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/Sisalto/2/Lue.java

Todettu käteväksi

toiper-4 [10.08.2006 20:38:18]

#

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?

Blaze [10.08.2006 21:12:07]

#

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.

toiper-4 [11.08.2006 13:32:34]

#

Hei Blaze!

Nyt onnistuu. Kiitti vielä kerran.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta