Kuinkas moinen oikein tapahtuu?
Pitäisi siis saada muuttujaan int foo jokin arvo.
Pitäisi siis saada muuttujaan int foo jokin arvo.
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 18
Vanhimmat
// kokonaisluvun lukeminen suoraan
// näppäimistöltä
import java.io.*;
import java.text.*;
public class LueKokonaisluku {
public static void main(String[] args) {
int luku = 0;
System.out.println("Syötä kokonaisluku: ");
try {
InputStreamReader syoteVirranLukija
= new InputStreamReader(System.in);
BufferedReader puskuroituLukija
= new BufferedReader(syoteVirranLukija);
String merkkijono
= puskuroituLukija.readLine();
DecimalFormat desimaaliMuoto
= new DecimalFormat();
Number numero
= desimaaliMuoto.parse(merkkijono);
luku = numero.intValue();
}
catch(Exception e) {
luku = 0;
}
System.out.println("Syötit luvun: " luku);
}
}
Täytyykö sen olla noin helkkarin vaikeaa?
Tosin jos koodaisin luokan, johon tulisi myös lue_luku() metodin lisäksi muitakin toimintoja niin sillä pärjäisi ainakin jonkin aikaa.
Miksei pelkkä cin tai scanf voi kelvata :(
Eipä taida Javasta paljoa helpompaa tapaa löytyä. Kukaan ei tosin kiellä sinua koodaamasta esim. omaa cin:iä.
Itse en muistaakseni ole koskaan tarvinnut Javan kanssa suoraan näppikseltä lukea yhtään mitään. Kyllä ne käyttäjän syötteet yleensä luetaan käyttöliittymän komponenteista, esim. textboxista tms.
Java ei pääse suoraa systeemiin kiinni, niinku c ja c tekee. Tietoturva nääs.
try {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str = "";
while (str != null) {
System.out.print("> prompt ");
str = in.readLine();
process(str);
}
} catch (IOException e) {
}
Vielä pitäisi saada tehtyä siten, että kursori palaisi aina alkuperäiselle paikalleen virheellisen syotteen saatuaan. Ehdotuksia?
import java.io.*;
import java.text.*;
class testi
{
public static void main(String[] args)
{
LueLuku luk = new LueLuku();
System.out.println("Anna luku");
int syote = luk.lueint();
System.out.println("Annoit luvun " syote);
}
}
class LueLuku
{
public LueLuku()
{
}
int lueint()
{
int luku;
for(;;)
{
try
{
InputStreamReader syoteVirranLukija = new InputStreamReader(System.in);
BufferedReader puskuroituLukija = new BufferedReader(syoteVirranLukija);
String merkkijono = puskuroituLukija.readLine();
DecimalFormat desimaaliMuoto = new DecimalFormat();
Number numero = desimaaliMuoto.parse(merkkijono);
luku = numero.intValue();
break;
}
catch(Exception e)
{
System.out.println("Anna kokonaisluku");
}
}
return luku;
}
}
>Itse en muistaakseni ole koskaan tarvinnut
>Javan kanssa suoraan näppikseltä lukea yhtään
>mitään. Kyllä ne käyttäjän syötteet yleensä
>luetaan käyttöliittymän komponenteista, esim.
>textboxista tms.
En vain halua vielä opetella käyttämään grafiikkakirjastoja vaan yleensäkin oppia ohjelmoimaan javalla
( olio-ohjelmointia, sillä c on todella heikkoa)
...olio-ohjelmoinnin oppimiseen et tarvitse lukea näppäimistöltä syötteitä. Keskity mieluummin olenaisempaan.
Haluan tehdä valmiita (pikku)ohjelmia.
ettei se taida niin helposti onnistua merkkipohjaisella puolella. Javassa kun ei ole C/C :n cursesia. Merkkipohjaisessa Javassa et voi sanoa kursorille "mene kohtaan x, y".
..käyttäjän nuoleskelua tuo desimaalieroittimen huomioon ottaminen. Kyykytetään ennemmin noita käyttäjä-apinoita ja laitetaan ne opettelemaan kansainväliset formaatit.
Henkilökohtaisesti olen ainakin saanut tarpeekseni tuosta kaikesta formaattien kirjosta niin, että mun ohjelmat hyväksyy vain desimaalipisteen numeroissa, vuodenaikaformaatina "yyyy/mm/dd" ja ajan muodossa "hh:mm:ss".
Kysymys ei ole perimmältään siitä kyllästyykö kone oikean formaatin pyytämiseen vaan siitä, että kuinka monta kertaa käyttäjä jaksaa näpytellä väärän. Kyllä Siperia opettaa, sanotaan.
Jonttu
..käyttäjän nuoleskelua tuo desimaalieroittimen huomioon ottaminen. Kyykytetään ennemmin noita käyttäjä-apinoita ja laitetaan ne opettelemaan kansainväliset formaatit.
Henkilökohtaisesti olen ainakin saanut tarpeekseni tuosta kaikesta formaattien kirjosta niin, että mun ohjelmat hyväksyy vain desimaalipisteen numeroissa, vuodenaikaformaatina "yyyy/mm/dd" ja ajan muodossa "hh:mm:ss".
Kysymys ei ole perimmältään siitä kyllästyykö kone oikean formaatin pyytämiseen vaan siitä, että kuinka monta kertaa käyttäjä jaksaa näpytellä väärän. Kyllä Siperia opettaa, sanotaan.
Jonttu
tein tämän vain siksi, koska jonkun rasittavan seikan takia vain toiseksi uusin viesti näkyy. prkl
käy katsomassa helsingin yliopiston tietojenkäsittelytieteen laitoksen (jonkin javakurssin sivuilta)kotisivuilta katsomassa. eiköhän sieltä löydy aiheeseen jotakin.
osaan näköjään kirjoittaa aika selkeästi.. :)
osoite oli http://www.cs.helsinki.fi/kurssit/
Eihän sinun nyt välttämättä tarvitse koodata omaa luokkaa lukeaksesi näppäimistöltä merkkejä...
import corejava.*;
public class Luvunluku
{
public static void main(String[] args)
{
int luku=0;
luku=Console.readInt("Luku: ");
System.out.println("Annoit luvun " luku);
}
}
Sitten lisäät siihen vielä ton luku=Console... -rivin jälkeen koodinpätkän, joka tarkistaa oliko
syötetty luku sallittu. Jos ei, kutsut mainia uudestaan.
corejava ei ole Java API:n pakkaus.
Se tulee erikseen Cornell & Hosrtmannin kirjan "Core Java 1.2 Volume 1" mukana olevalla CD:llä.
Siis tarkoittaa sitä, ettei tuo yleisesti toimi ellet ole sitä (corejava pakkausta) em. CD:ltä erikseen asentanut.
Tuollaisia viritelmiä kannattaisi ylipäältään varoa.
Tässä yksi ehdotus lisää.
/*Javassa main-funktioon on mahdollista antaa argumentteja komento-
riviltä, kuten oheinen esimerkki yrittää havainnollistaa.
Argumentit tulevat merkkijonotaulukkoon ja tässä kohtaan 0,
mikä on taulukon ensimmäinen paikka. Jos tarvitaan lukuja,
ne täytyy muuttaa luvuiksi jollakin sopivalla funktiolla,
esim parseInt */
public class nimi
{
public static void main(String args[])
{
String nimi;
nimi=args[0];
System.out.println("Nimesi on" " " nimi);
}
}
Tässä esimerkki int-tyyppiseksi luvuksi muuttamisesta:
public class luku
{
static public void main(String args[])
{
int luku;
luku=Integer.parseInt(args[0]);
System.out.println("Luku on" " " luku);
}
}