Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225

    [JAVA] Problema con il controllo di un input

    ho un semplice controllo di input, che dovrebbe reagire in modo diverso a seconda di quello che viene inserito tramite tastiera.

    codice:
    try
    {
    	BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    	String s;
    	while((s = in.readLine()).length() != 0)
    	{
    	if (s == "xxxxxxx")
    	System.out.println("yyyyyyy");
    	else if (s == "yyyyyyy")
    	System.out.println("xxxxxxx");
            } 
    }
    
    
    catch(IOException ioe)
    {
    	System.out.println("Errore: " +ioe);
    }
    il programma compila correttamente ma al momento della sua esecuzione, quando digito xxxxxxx non mi compare yyyyyyy ma il programma resta in attesa di un altra stringa (lo stesso accade se digito yyyyyyy) e questo succede finchè non do una riga vuota, e il programma termina automaticamente.
    Il codice in questione si trova in un main.


    Quale può essere la causa di tale problema?
    ...credi sia aria quella che stai respirando?

  2. #2
    Perchè per le stringhe non si usa l'== ma l'equals
    s.equals("xxxxxxxx");
    s.equals("yyyyyyyy");

    Ciauz
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  3. #3
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225
    ok, con il codice modificato con il metodo equals della classe String il meccanismo di reazione al'input funziona correttamente

    codice:
    try
    {
    	BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    	String s;
    	while((s = in.readLine()).length() != 0)
    	{
    	if (s.equals("xxxxxxx"))
    	System.out.println("yyyyyyy");
    	else if (s.equals("yyyyyyy"))
    	System.out.println("xxxxxxx");
            } 
    }
    
    
    catch(IOException ioe)
    {
    	System.out.println("Errore: " +ioe);
    }

    mi rimane cmq una domanda: invece di dare una riga vuota per far terminare il ciclo vorrei dare un isrtruzione precisa, ad esempio "Exit", cosa dovrei sostituire al posto del metodo lenght()? Ho provato con equalsIgnoreCase(), ma ovviamente funzione solo con una parola, a me invece serve che funzioni sia con xxxxxxx e sia con yyyyyyy. Come potrei utilizzare queto metodo per le 2 parole xxxxxxx e yyyyyyy?


    grazie
    ...credi sia aria quella che stai respirando?

  4. #4
    Credo che ti basti scrivere:

    codice:
    while (s.equals("Exit") != 0) {
    ...
    ...
    s = in.readLine()
    }
    :quipy: Kalauras :quipy:
    www.kalauras.com

  5. #5
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225
    con il codice da te consigliato mi da errore perchè non accetta l'operatore !=
    ...credi sia aria quella che stai respirando?

  6. #6
    Prova in questo modo:
    codice:
    while ((s.equals("Exit")) != 0) {
    ...
    ...
    s = in.readLine()
    }
    ho messo s.equals("Exit") tra parentesi tonde... :gren:
    :quipy: Kalauras :quipy:
    www.kalauras.com

  7. #7
    Sorry, ma sto facendo confusione con il metodo "compareTo()"...
    il codice esatto dovrebbe essere:
    codice:
    while (!s.equals("Exit")) {
    ...
    ...
    s = in.readLine()
    }
    Perchè "equals()" ritorna un booleano e non un intero.
    :quipy: Kalauras :quipy:
    www.kalauras.com

  8. #8
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225
    ok, grazie per l'aiuto, ora funziona tutto correttamente. Ho cmq usato equalsIgnoreCase (metodo di String) così non si è costretti a digitare Exit con la E maiuscola.
    ...credi sia aria quella che stai respirando?

  9. #9
    puoi usare while((s = in.readLine())!=null){.....}

    in questo modo ti basta premere CTRL+Z per uscire dalla lettura
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

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 © 2024 vBulletin Solutions, Inc. All rights reserved.