Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [java] sto imparando java, non va il primo programma che ho scritto...

    Ciao a tutti, sto iniziando a studiare java per conto mio in questo periodo...chiedo già scusa se quello che chiedo magari sono cose stupide ma ho già provato a cercare la soluzione e non ne sono venuto a capo...questo è il primo programma che ho scritto:
    codice:
    import java.io.*;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            int an, aa, eta;
            System.out.println("inserisci anno di nascita--> ");
            an = System.in.read();
            System.out.println("inserisci anno attuale--> ");
            aa = System.in.read();
            eta = aa - an;
            System.out.println("la tua età è: "+eta);
        }
    Quello che fa è:
    inserisci anno di nascita-->
    1991
    inserisci anno attuale-->
    la tua età è: 8
    1991 è il valore che ho inserito io, però poi non mi ha fatto inserire nessun valore su anno attuale e mi da in automatico il risultato...perchè?
    un'altra cosa, all'inizio non mi funzionava System.in.read() e ho scoperto dopo che è oggligatorio mettere "throws IOException", ma devo ancora capire perchè...qualcuno sa spiegarmelo?
    grazie...
    Ross

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java] sto imparando java, non va il primo programma che ho scritto...

    Originariamente inviato da fran_ross
    codice:
            an = System.in.read();
    No, non va bene. Questo read() legge 1 byte dallo standard-input. Un byte che tipicamente è appunto 1 carattere digitato.
    Quindi non puoi digitare 1 poi 9 poi 9 poi 1 e aspettarti che read fornisca un int 1991. Non è così che funziona. Con il primo 1 digitato il read ti fornisce 49 (il codice ASCII di '1').

    Puoi usare o java.util.Scanner (cerca sul forum .... è pieno di esempi) oppure un java.io.BufferedReader per leggere "a righe" (idem per la ricerca).

    In ogni caso ti conviene approfondire la questione del I/O.

    Originariamente inviato da fran_ross
    ho scoperto dopo che è oggligatorio mettere "throws IOException", ma devo ancora capire perchè...qualcuno sa spiegarmelo?
    Quel read() dichiara di lanciare IOException. Che è una eccezione "checked" (controllata) e il programmatore deve considerarla.
    A livello pratico si traduce in: o la tratti in un try-catch, oppure la dichiari nel metodo in cui sei (nel main() come hai fatto) affinché possa "uscire" dal metodo.

    Anche qui il discorso sulle eccezioni sarebbe più lungo e dovresti (sicuramente prima o poi) approfondirlo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Se sei agli inizi ti consiglio vivamente di valutare i tutorial ufficiali di Java, partono dalle basi ci sono capitoli dedicati all'I/O e alle eccezioni, anche nel dettaglio.

  4. #4
    Grazie andbin, ho capito...in effetti nella dispensa che sto seguendo c'è anche il BufferedReader e adesso capisco perchè...
    comunque si, sono all'inizio e quindi adesso devo approfondire molte cose, grazie di nuovo di tutto...
    Ross

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.