+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

istruzione if anomala

  1. #1
    picavbg non  in linea Novello
    Post
    14
    Like Inviati  
    0
    Like Ricevuti  
    0
    Da ieri mi arrovello il cervello per capire perch nel programmino di esercitazione sugli array mi sono imbattuto in un risultato anomalo durante l'esecuzione di una if all'interno di un ciclo do di scansione degli elementi di un array. Riporto il codice a cui mi riferisco:
    private static void calcRpt(String frase) {
    		// calcola il n di ricorrenze delle vocali presenti in frase
    		int k;
    		int sw;
    		int lunStri = frase.length() -1;
    		int [] ricorrenze;	// dichiarazione della tabella ricorrenze (a 1 dimensione)
    		String crtStri;
    		String [] elenVoc = {"a", "e", "i", "o", "u"};
    		//-------------------------------------------------------
    		ricorrenze = new int [5]; // creazione della tabella ricorrenze
    		for (k = 0 ; k <= (lunStri) ; k++) {
    			crtStri = frase.substring (k, k+1);
    			System.out.println();   
    			System.out.println("k= " + k + " - crstri= |" + crtStri + "|");
    			sw = 0;
    			do {
    				System.out.println("elenVoc[" + sw + "]= |" + elenVoc[sw] + "|");
    				if (crtStri == elenVoc[sw]) {	// la condizione non si verifica mai - perch?
    					ricorrenze[sw]++;
    					System.out.println("vocale corrente= |" + crtStri + "| ricorrenza n." + ricorrenze[sw] );
    					break;
    				}
    				sw++;
    			}	while (sw < 5);
                   }
    
    ed ecco l'output prodotto dalle righe di controllo sui passi di programma interessati:
    $ java vocali

    ******* Ricorrenze di vocali nel testo *******
    ------- Scrivi una frase -------
    bietola

    k= 0 - crstri= |b|
    elenVoc[0]= |a|
    elenVoc[1]= |e|
    elenVoc[2]= |i|
    elenVoc[3]= |o|
    elenVoc[4]= |u|

    k= 1 - crstri= |i|
    elenVoc[0]= |a|
    elenVoc[1]= |e|
    elenVoc[2]= |i|
    elenVoc[3]= |o|
    elenVoc[4]= |u|

    k= 2 - crstri= |e|
    elenVoc[0]= |a|
    elenVoc[1]= |e|
    elenVoc[2]= |i|
    elenVoc[3]= |o|
    elenVoc[4]= |u|

    k= 3 - crstri= |t|
    elenVoc[0]= |a|
    elenVoc[1]= |e|
    elenVoc[2]= |i|
    elenVoc[3]= |o|
    elenVoc[4]= |u|

    k= 4 - crstri= |o|
    elenVoc[0]= |a|
    elenVoc[1]= |e|
    elenVoc[2]= |i|
    elenVoc[3]= |o|
    elenVoc[4]= |u|

    k= 5 - crstri= |l|
    elenVoc[0]= |a|
    elenVoc[1]= |e|
    elenVoc[2]= |i|
    elenVoc[3]= |o|
    elenVoc[4]= |u|

    k= 6 - crstri= |a|
    elenVoc[0]= |a|
    elenVoc[1]= |e|
    elenVoc[2]= |i|
    elenVoc[3]= |o|
    elenVoc[4]= |u|

    *** Elenco vocali e delle loro ricorrene ***
    vocale n ricorrenze
    a 0
    e 0
    i 0
    o 0
    u 0
    Come si pu notare la stampa indicata nella riga di controllo
    System.out.println("vocale corrente= |" + crtStri + "| ricorrenza n." + ricorrenze[sw] );
    non mai avvenuta, nonostante che la frase immessa contenga 4 vocali, tutte presenti nell'array di vocali e nonostante che la if venga ripetuta per tutti gli elementi dell'array. Apparentemente l'esito del condizione risulterebbe semre "false".
    Ci deve essere un errore sintattico che non riesco a vedere, ... ma dov'?

  2. #2
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,365
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    31
    Le stringhe in Java si confrontano in quel modo? Sicuro? Ti dice niente il metodo equals ?
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    picavbg non  in linea Novello
    Post
    14
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Le stringhe in Java si confrontano in quel modo? Sicuro? Ti dice niente il metodo equals ?
    Le stringhe ... le stringhe ... le stringhe

    Ooooh, ecco :
    if (crtStri.equals(elenVoc[sw]))
    
    Ora funziona. Ma, che fatica. Non ricordavo l'eccezione.
    Grazie!

  4. #4
    picavbg non  in linea Novello
    Post
    14
    Like Inviati  
    0
    Like Ricevuti  
    0
    Bene. Dubbio Risolto
    Ultima modifica di AntonioG; 22-10-2018 22:33 

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. [VB2010+] DataSet anomala
    Da glak nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 03-03-2012, 12:53
  2. selezione combobox anomala
    Da glak nel forum Visual Basic .Net
    Risposte: 0
    Ultimo Post: 12-02-2011, 16:12
  3. Apertura finestra prompt anomala
    Da Carmen nel forum Microsoft Windows
    Risposte: 6
    Ultimo Post: 29-06-2006, 14:13
  4. Shell anomala
    Da Carmen nel forum Visual Basic 6
    Risposte: 7
    Ultimo Post: 11-01-2006, 19:10
  5. Formattazione anomala !!!!!
    Da lorussino nel forum Microsoft Windows
    Risposte: 2
    Ultimo Post: 23-12-2003, 12:40