Programmino in java "testuale"
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 15 di 15

Discussione: Programmino in java "testuale"

Cambio titolo
  1. #1
    Utente L'avatar di Holly
    Registrato il
    10-02
    Località
    Torino
    Messaggi
    16.467

    Programmino in java "testuale"

    Ciao a tutti, ho iniziato da poco a studiare seriamente il linguaggio java e mi ritrovo a voler intraprendere la risoluzione di esercizi più difficili degli argomenti appena trattati

    Insomma sono appena arrivato a trattare gli If-else.

    Ora mi ritrovo a voler risolvere un esercizio in cui un dato è una parola, ho letto qua e la che ho bisogno di adottare String per dichiarare della parole ,insomma il dato in questione è

    risp [è una risposta a una domanda], di tipo String e sostanzialmente deve essere SI/NO, ecco il mio problema non risiede nell'esercizio strutturato ad IF ma bensì nell'utilizzo di questa dichiarazione ovvero tramite il comando String.

    Come devo dichiarare la singola variabile risp affinchè io possa scrivere, sia un SI che un NO? Soprattutto è possibile ciò che chiedo?

    In pratica io faccio apparire ad esempio la domanda "Abiti in provincia?", e tramite questa "risp" devo dirgli SI/NO...e cosi per un altra variabile che tratta però i mezzi di trasporto.

    Io personalmente per ora ho azzardato questo :

    String risp= "si"+"no",
    mezzoTr= "bus"+"treno"+"altro";

    Non so quanto possa esser giusto, ma per intuito ho provato a mettere ciò XD.

    Guardacaso però gli unici due errori del mio programmino sono legati alla lettura di queste due variabili, ovvero risp e mezzoTr...

    risp= c.readInt();
    MezzoTr= c.readInt();

    Per entrambe l'errore è lo stesso :

    found : int
    required: java.lang.String.

    Io ho usato String quindi perchè dice che richiede una variabile di tipo String?L'int l'ho usato per altre variabili

    Grazie in anticipo a chi mi aiuterà .

  2. #2
    Puppppppaaaaaaaaaaa L'avatar di Revan1985
    Registrato il
    01-06
    Località
    Solbiate Olona
    Messaggi
    1.655
    beh, è come se tu dovessi prendere una ricetta, e al posto del pecorino metti il grana, vedi che cambia completamente
    tu stai mettendo un tipo int [32bit], in un tipo string [x bit a seconda della lunghezza]
    capirai bene che non va, eppoi, tenti di tradurre dal tipo string ad int... ma quando mai

    usa c.read() al posto di c.readInt() [o cerca sulla reference del java cosa ti rsestituisce uno string nella console, credo o read o readLine... dovrebbe essere la seconda nel tuo caso ]
    È stato detto che la democrazia è la peggior forma di governo, eccezion fatta per tutte quelle altre forme che si sono sperimentate finora.


  3. #3
    java is forever
    Ospite
    Citazione Holly Visualizza Messaggio
    risp= c.readInt();
    MezzoTr= c.readInt();

    Per entrambe l'errore è lo stesso :

    found : int
    required: java.lang.String.
    Se risp è una stringa fai

    Codice:
    risp = "" + c.readInt();

  4. #4
    Utente L'avatar di Holly
    Registrato il
    10-02
    Località
    Torino
    Messaggi
    16.467
    Grazie a entrambi, ho provato a seguire entrambi i consigli ma ancora non riesco a farlo compilare correttamente, per qualche errore che ho sicuramente commesso e non riesco a trovare da me.

    Se uso il comando c.readLine(); mi da come errore il fatto delle variabili dichiarate con string

    Ecco tutte le variabili che dovevo dichiarare per l'esercizio, vediamo se fatti così sono giuste :
    int percRimb,
    RIMBUS=15,
    RIMTRENO=10;

    String risp = c.readLine() ;
    mezzoTr= c.readLine() ;


    double prezzoAbb,distScuola,rimborso;

    final String DOM1="Qual'e il prezzo dell'abbonamento?",
    DOM2="Abiti in provincia? [si/no]",
    DOM3="Quanto disti dalla scuola in km?",
    DOM4="Quale mezzo di trasporto usi? [bus/treno/altro]",
    MSG="L'ammontare del rimborso e' pari a Euro";
    Ora però collegato alle due String mi da come errore questo:

    symbol : variable mezzoTr
    location: class RimborsoBiglietto
    mezzoTr= c.readLine() ;
    ^
    Insomma non mi da più errore sulla variabile risp, bensì sulla mezzoTr
    Ultima modifica di Holly; 20-10-2008 alle 13:51:01

  5. #5
    Puppppppaaaaaaaaaaa L'avatar di Revan1985
    Registrato il
    01-06
    Località
    Solbiate Olona
    Messaggi
    1.655
    se tenti di leggere mezzoTr nelle dichiarazioni, fuori dal main, sbagli li, se lo stai facendo nel main, non hai dichiarato il tipo, infatti

    String risp = c.readLine() ;
    -->mezzoTr= c.readLine() ;<--

    dove sta il tipo?
    È stato detto che la democrazia è la peggior forma di governo, eccezion fatta per tutte quelle altre forme che si sono sperimentate finora.


  6. #6
    Utente sempre incazzato L'avatar di andre90boss
    Registrato il
    04-06
    Messaggi
    1.764
    se non hai risolto con quello scritto sopra posta il codice completo che &#232; meglio :9



  7. #7
    Utente L'avatar di Holly
    Registrato il
    10-02
    Località
    Torino
    Messaggi
    16.467
    x Revan: OMG pensavo di aver messo la virgola dopo la dichiarazione di risp o_o!!!

    Comunque ecco il codice completo, ora mi da un solo errore anzich&#232; i 7 di prima riferito a percRimb

    class RimborsoBiglietto
    {
    public static void main (String Args[])
    {

    ConsoleReader c = new ConsoleReader(System.in);

    int percRimb,
    RIMBUS=15,
    RIMTRENO=10;

    String risp = "",
    mezzoTr= "" ;


    double prezzoAbb,distScuola,rimborso;

    final String DOM1="Qual'e il prezzo dell'abbonamento?",
    DOM2="Abiti in provincia? [si/no]",
    DOM3="Quanto disti dalla scuola in km?",
    DOM4="Quale mezzo di trasporto usi? [bus/treno/altro]",
    MSG="L'ammontare del rimborso e' pari a Euro ";


    System.out.println(DOM1);
    prezzoAbb = c.readInt();
    System.out.println(DOM2);
    risp = c.readLine();



    if(risp.equalsIgnoreCase("si"))
    {
    System.out.println(DOM3);
    distScuola = c.readInt();

    if(distScuola>=20)
    {
    System.out.println(DOM4);
    mezzoTr = c.readLine();

    if(mezzoTr=="bus")
    {
    percRimb=RIMBUS;
    }

    else
    {
    if(mezzoTr=="treno")
    {
    percRimb=RIMTRENO;
    }
    }
    }
    }

    rimborso= prezzoAbb*percRimb/100;
    System.out.println(MSG);
    System.out.println(rimborso);
    }

    }
    l'errore invece &#232; [tra l'altro sembra un errore stupido XD]

    variable percRimb might not have been initialized
    rimborso= prezzoAbb*percRimb/100;
    ^
    1 error
    tabella dati:


    diagramma:
    Ultima modifica di Holly; 20-10-2008 alle 16:51:48

  8. #8
    Utente sempre incazzato L'avatar di andre90boss
    Registrato il
    04-06
    Messaggi
    1.764
    Citazione Holly Visualizza Messaggio
    x Revan: OMG pensavo di aver messo la virgola dopo la dichiarazione di risp o_o!!!

    Comunque ecco il codice completo, ora mi da un solo errore anzich&#232; i 7 di prima riferito a percRimb



    l'errore invece &#232;
    Codice:
    class RimborsoBiglietto
    {
        public static void main (String Args[])
       {
    
             ConsoleReader c = new ConsoleReader(System.in);
    
             int percRimb,
                 RIMBUS=15,
                 RIMTRENO=10;
    
             String risp = c.readLine(); //perch&#232;?
             String mezzoTr= c.readLine() ;//perch&#232;?
    
    
             double prezzoAbb,distScuola,rimborso;
    
             final String DOM1="Qual'e il prezzo dell'abbonamento?",
                          DOM2="Abiti in provincia? [si/no]",
                          DOM3="Quanto disti dalla scuola in km?",
                          DOM4="Quale mezzo di trasporto usi? [bus/treno/altro]",
                          MSG="L'ammontare del rimborso e' pari a Euro ";
    
    
              System.out.println(DOM1);
              prezzoAbb= c.readInt();
              System.out.println(DOM2);
              risp= c.readLine();
    
    
    
                    if(risp=="si")
    /*
    cos&#236; confronti il riferimento all'oggetto si risp se si chiama "si", fai risp.equalsIgnoreCase("si")
    */
                    {
                      System.out.println(DOM3);
                      distScuola= c.readInt();
    
                      if(distScuola>=20)
                      {
                      System.out.println(DOM4);
                      mezzoTr= c.readLine();
    
                      if(mezzoTr=="bus")//stessa cosa
                      {
                      percRimb= c.readInt();
    // non serve a nulla se la sovrascrivi dopo con la costante
                      percRimb=RIMBUS;
                      }
                      else
                      {
                          if(mezzoTr=="treno")//stessa cosa
                          {
                              percRimb=RIMTRENO;
                          }
    
                      }
    
                      }
    
    
    
                      }
    
    //percRimb deve essere inizializzao a un valore visto che lo usi
    
                      rimborso= prezzoAbb*percRimb/100;
                      System.out.println(MSG);
                      System.out.println(rimborso);
    
    
    
     }
    }
    questi sono un paio di errori colti a prima vista

    edit: tra l'altro te lo dice anche la tabella di inizializzare percRimb a 0
    che verione usi di java?
    Ultima modifica di andre90boss; 20-10-2008 alle 15:47:02



  9. #9
    Utente L'avatar di Holly
    Registrato il
    10-02
    Località
    Torino
    Messaggi
    16.467
    L'ultima che avevo trovato[se intendi il jdk ] la 1.6.0.07

    Ehm quell'istruzione che mi hai consigliato ovvero, equals ignore non l'avevo mai vista prima quindi non sapevo per cosa si usasse prima di ora

    In pratica a cosa serve?

    Perch&#232; come commento mi hai messo perch&#232; vicino a entrambe le String ?

    Ma comunque le variabili in cui come valore iniziale c'&#232; scritto 0, penso siano dei valori a piacere, senno dovrei mettere anche distScuola/prezzoAbb/percRimb/rimborso = 0 ?

    edit: sto riuscendo a far funzionare sto programma o_o....tutto grazie a quella cosa di risp.equalsIgnoreCase("si")
    Ultima modifica di Holly; 20-10-2008 alle 16:26:54

  10. #10
    Utente L'avatar di devilheart
    Registrato il
    01-03
    Messaggi
    28.310
    Citazione Holly Visualizza Messaggio
    Ehm quell'istruzione che mi hai consigliato ovvero, equals ignore non l'avevo mai vista prima quindi non sapevo per cosa si usasse prima di ora

    In pratica a cosa serve?
    in java il nome di un oggetto è un puntatore ad esso. == confronta il puntatore a due oggetti (e sarà sempre falso per due oggetti diversi). equals invece fa il confronto sul contenuto

  11. #11
    Utente L'avatar di Holly
    Registrato il
    10-02
    Località
    Torino
    Messaggi
    16.467
    Citazione devilheart Visualizza Messaggio
    in java il nome di un oggetto &#232; un puntatore ad esso. == confronta il puntatore a due oggetti (e sar&#224; sempre falso per due oggetti diversi). equals invece fa il confronto sul contenuto
    Thx per la spiegazione

    edit: ho modificato il codice nel post di sopra dove avevo postato lo stesso

    Ora funziona in parte, ovvero fa tutte le domande, ma quando ad esempio arriva al momento in cui si digita, bus...o treno...si ferma li, nel codice che ho postato d&#224; errore nell'inizializzazione della variabile percRimb...per&#242; se la metto io uguale a 0 poi mi esce sia per bus che per treno...che il rimborso &#232; di 0.0 visto che va a moltiplicare quel valore alla fine del codice nella variabile di calcolo "rimborso"
    Ultima modifica di Holly; 20-10-2008 alle 16:54:06

  12. #12
    java is forever
    Ospite
    @Holly: potresti inserire il codice usando il tag CODE?

  13. #13
    Utente sempre incazzato L'avatar di andre90boss
    Registrato il
    04-06
    Messaggi
    1.764
    Citazione Holly Visualizza Messaggio
    L'ultima che avevo trovato[se intendi il jdk ] la 1.6.0.07

    Ehm quell'istruzione che mi hai consigliato ovvero, equals ignore non l'avevo mai vista prima quindi non sapevo per cosa si usasse prima di ora

    In pratica a cosa serve?

    Perch&#232; come commento mi hai messo perch&#232; vicino a entrambe le String ?
    perch&#232; non ne capisco l'utilit&#224;

    Ma comunque le variabili in cui come valore iniziale c'&#232; scritto 0, penso siano dei valori a piacere, senno dovrei mettere anche distScuola/prezzoAbb/percRimb/rimborso = 0 ?

    edit: sto riuscendo a far funzionare sto programma o_o....tutto grazie a quella cosa di risp.equalsIgnoreCase("si")
    Codice:
    import java.util.Scanner;
    
    public class RimborsoBiglietto {
        public static void main(String[] args){
            Scanner in=new Scanner(System.in);
    
            int percRim=0;
            final int RIM_BUS=15;
            final int RIM_TRENO=10;
            double prezzo;
            double distanza;
            double rimborso;
            
            String risp="";
            String mezzo="";
            
            System.out.println("Qual'e il prezzo dell'abbonamento?(numero intero)");
            prezzo=in.nextInt();
            
            System.out.println("Abiti in provincia?(si/no)");
            risp=in.next();
            
            if(risp.equalsIgnoreCase("si")){
                System.out.println("Quanto disti dalla scuola?(numero intero)");
                distanza=in.nextInt();
                
                if(distanza>=20){
                    System.out.println("Quale mezzo di trasporto usi?(treno-bus)");
                    mezzo=in.next(); 
                    
                    if(mezzo.equalsIgnoreCase("treno"))
                        percRim=RIM_TRENO;
                    else
                        if(mezzo.equalsIgnoreCase("bus"))
                            percRim=RIM_BUS;
                }
            }
            
            rimborso=prezzo*percRim/100;
            System.out.println("L'ammontare del rimborso &#232;: "+rimborso+"€");
        }
    }
    questo codice &#232; il tuo programma, funziona, vedi se trovi dove sbagli

    ti d&#242; un consiglio, rendi i tuoi programmi molto pi&#249; leggibili da terzi, un esempio pu&#242; essere quello li che ti ho fatto, prendi da subito questa abitudine, lascia anche molti spazi, che ti aiutano moolto nel debug, che un codice "denso". poi al limite una volta testato li tolgi per renderlo pi&#249; compatto

    PS ovviamente questo progr non esegue nessun controllo ne gestisce i dati inseriti errati, am non penso sia questo lo scopo dell'esercizio ^^
    Ultima modifica di andre90boss; 20-10-2008 alle 21:19:10



  14. #14
    Utente L'avatar di Holly
    Registrato il
    10-02
    Località
    Torino
    Messaggi
    16.467
    Ti dò un consiglio, rendi i tuoi programmi molto più leggibili da terzi, un esempio può essere quello li che ti ho fatto, prendi da subito questa abitudine, lascia anche molti spazi, che ti aiutano moolto nel debug, che un codice "denso". poi al limite una volta testato li tolgi per renderlo più compatto

    PS ovviamente questo progr non esegue nessun controllo ne gestisce i dati inseriti errati, am non penso sia questo lo scopo dell'esercizio ^^
    Si difatti ho commesso vari errori anche per colpa del disordine creatosi durante la compilazione dell'esercizio, ora dopo aver esaminato quello che mi hai gentilmente postato ho rifatto tutto da zero, e stavolta mi è venuto al primo colpo, modificando qua e la' delle cose ma tutto sommato va bene.

    Grazie mille per l'aiuto, stavo impazzendo per delle cose banali che non avevo notato

  15. #15
    Utente sempre incazzato L'avatar di andre90boss
    Registrato il
    04-06
    Messaggi
    1.764
    all'inizio &#232; cos&#236; per tutti

    buon lavoro



Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •