apprendimento Java e problemii If else

ciclo di controllo che funziona male e non capisco perché

« Older   Newer »
 
  Share  
.
  1.  
    .
    Avatar

    Junior Member

    Group
    Member
    Posts
    24

    Status
    Offline
    Buongiorno a tutti.
    Ho iniziato a studiare Java e mi trovo alle prese con un ciclo di controllo If che funziona un po' come gli pare (a mio avviso).
    Se i parametri da controllare inseriti da tastiera sono numerici tuto va bene; se sono caratteri proprio li snobba.
    Allego il listato del programmino di prova (che non fa altro che dirmi in che anno festeggerò o ho festeggiato il mio compleanno in base ai dati inseriti) sperando che possiate chiarirmi il perché di questo comportamento, cioè: dove sbaglio?
    Un saluto
    Luigi

    CODICE
    import java.text.SimpleDateFormat;/*SimpleDateFormat è una
    * classe concreta per la formattazione delle
    * date*/
    import java.util.Date;/*La classe Date rappresenta un
    * momento nel tempo, con una precisione al millisecondo.
    * Il risultato è una stringa*/
    import java.util.Calendar;/*la classe Calendar fornisce metodi per gestire le date e il risultato è un intero*/
    import java.util.Scanner;/*Carica la classe Scanner dal
                             *package (libreria) java.util*/


    public class Compleanno
    {
      public static void main(String[] args) {
           java.util.Calendar calendario=java.util.Calendar.getInstance();/*creo un
                                                   *oggetto della classe Calendar*/
           int correnteAnno=calendario.get(Calendar.YEAR);/*utilizzo l'oggetto calendario
           *per assegnare la data alla variabile correnteAnno*/
           //System.out.println("Corrente anno: "+correnteAnno);
           int annoDiNascita;
           int anniDiEta;
           int compleanno;
           int annoAttuale;
           String festa="";
           String s="";
           String n="";
           String risposta;
           int risposta2;
           Scanner tastiera=new Scanner(System.in);
           SimpleDateFormat annoCorrente = new SimpleDateFormat();
           annoCorrente.applyPattern("yyyy");//mi dà solamente l'anno di quattro cifre (yyyy)
           Date data=new Date();/* creo un nuovo oggetto data per ottenere in questo
                                   * caso l'anno attuale*/
           annoAttuale=Integer.parseInt(annoCorrente.format(data));/*converte la stringa
                                                                      *in intero*/
           while (annoAttuale>0){
           //System.out.print("Anno corrente "+annoCorrente.format(data));

           System.out.println(" ");

           System.out.println("Ciao!");
           System.out.println("Qual è il tuo anno di nascita? >");
           annoDiNascita=tastiera.nextInt();
           System.out.println(" ");
           System.out.println("Per conoscere la data del tuo compleanno ");
           System.out.println("devi inserire l'età che t'interessa >");
           anniDiEta=tastiera.nextInt();
           compleanno=annoDiNascita+anniDiEta;
           System.out.println(" ");
           if (compleanno<correnteAnno){
               festa="festeggiato";
               System.out.println(festa);
           }
           else{
               festa="festeggerai";

           }
           System.out.println("Hai "+festa+" i tuoi "+anniDiEta+" anni nel "+compleanno);
           System.out.println(" ");
           /*System.out.println("\nVuoi continuare? 1/0 >");
           risposta2=tastiera.nextInt();

           System.out.print("La risposta è: "+risposta2);
           System.out.println(" ");
           if (risposta2==0){
               System.out.println("Risposta If "+risposta2);
               System.out.println("Adieu!");
               break;
           }questo funziona*/

           /*System.out.println("\nVuoi continuare? s/n >");
           System.out.println(" ");
           risposta=tastiera.next();
           System.out.print("La risposta è: "+risposta);

           System.out.println(" ");

           if (risposta==n){
               System.out.println("Risposta If "+risposta);
               System.out.println("Adieu!");
               break;
           } questo non funziona*/
           }
       }
       }
     
    .
  2.  
    .
    Avatar

    Junior Member

    Group
    Member
    Posts
    24

    Status
    Offline
    Vabbè, trovato:
    sostituire con

    if (risposta.equals("n")){
    System.out.println("Risposta If "+risposta);
    System.out.println("Adieu!");
    break;
    }


    il pezzo:

    if (risposta==n){
    System.out.println("Risposta If "+risposta);
    System.out.println("Adieu!");
    break;
    }


    Una buona serata a tutti.
     
    .
  3.  
    .
    Avatar

    Member

    Group
    Administrator
    Posts
    316

    Status
    Offline
    CITAZIONE (Luigi Rubei @ 25/1/2021, 20:43) 
    Vabbè, trovato:
    sostituire con

    if (risposta.equals("n")){
    System.out.println("Risposta If "+risposta);
    System.out.println("Adieu!");
    break;
    }


    il pezzo:

    if (risposta==n){
    System.out.println("Risposta If "+risposta);
    System.out.println("Adieu!");
    break;
    }


    Una buona serata a tutti.

    Ciao Luigi! Come va, tutto bene?

    Ultimamente sono molto impegnato e non ho più controllato il forum :)

    Grazie di aver condiviso la soluzione del problema
     
    .
2 replies since 24/1/2021, 12:39   62 views
  Share  
.