Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    75

    java - confrontare due caratteri?

    Salve a tutti,
    ho un piccolo problema, un esercizio in cui devo verificare se una parola è palindrome (leggibile in entrambi i versi, tipo OTTO o ANNA).

    Il problema è alla fine del codice, mi dice che char can't be redeferenced... che significa? dov'è l'errore?

    Nell'esercizio distinguo tra frasi con numero di lettere pari e dispari, questo è solo il codice per le lettere pari

    public class Frase {

    public static void main(String args[]) {

    int pari;
    int dispari;

    char ch[]=args[0].toCharArray();

    System.out.println(ch.length);

    if (ch.length%2<1) {

    pari=ch.length/2;
    System.out.println(pari);

    for(int i=0; i<=pari; i++) {

    for (int a=ch.length; a>=pari; a--) {

    if (ch[i].equals(ch[a])) {

    System.out.println("la frase è palindrome");


    }

    }

    }



    }

    }

    }

    Grazie 1000

    Ciao

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    if (ch[i].equals(ch[a]))
    ch[i] è un char, tipo di dato primitivo, sui quali non si chiamano i metodi (equals è un metodo di String)
    if (ch[i] == ch[a])
    questo testa l'uguaglianza tra char
    :mavieni: :mavieni: :mavieni: :mavieni: :mavieni: :mavieni: :mavieni:

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    75

    ancora un errore

    ho messo ch[1]==ch[a]
    ed in effetti ora non trova più errori nel codice.

    Eseguendolo però, mi restituisce una frase di questo tipo

    Exception in thread "main" java.lang.ArrrayIndexOutofBoundsException at Frase.main

    sembra che non trovi il main?

    però i primi due risultati che chiedo nel codice me li restituisce correttamente

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    ArrayIndexOutOfBounds viene creata quando provi ad accedere a un array in una posizione che non esiste
    for (int a=ch.length-1; a>=pari; a--)
    stavi leggendo l'array in pos 8 quando la lunghezza è 8 ma un array parte da 0 e arriva a 7

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    75

    chiaro!!!

    HAAAAAAAAAAAAAAAAAAAA!!!!

    Grazie tante, sapevo che l'array parte da zero, ma non avrei mai collegato questo al motivo per cui non funzionava.

    Ora è tutto chiaro

    Grazie 1000

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    16
    Cmnq nel programma che hai scritto stampa "la frase e' palindrome" ogni volta che trova una letterea uguale all'altra.

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    75
    si, me ne sono accorta quando ho compilato ed eseguito, spostando la riga al di fuori del ciclo è andato a posto

    cmq grazie per l'avvertimento

    ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    75

    non funziona!!!

    Ho rivisto il codice, e purtroppo non funziona bene,
    se invece di otto scrivo ottone, dice comunque che "la frase è palindrome"...

    ho il dubbio che ci sia un problema nel ciclo for, qualcuno sa da che potrebbe dipendere?

    Grazie

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    16
    codice:
    public class Frase { 
    
     public static void main(String args[]) { 
    
        int pari; 
        int dispari; 
        int counter=0;	
        char ch[]=args[0].toCharArray(); 
    
        System.out.println(ch.length); 
    
        if (ch.length%2<1) { 
          pari=ch.length/2; 
          System.out.println(pari); 
          int a=ch.length-1;
      
          for(int i=0; i<pari; i++) { 
    	if (ch[i]==ch[a]) { 
     	   System.out.println("ch.i"+i+": "+ch[i]);
    	   System.out.println("ch.a"+a+": "+ch[a]);
    	   counter++;
    	} 
    	a--;
          } 
    
         if(counter==ch.length/2)System.out.println("palindromo");
        } 
      } 
    }

    Cosi funziona..ti ho messo anche delle print aggiuntive che mostrano il confronto delle lettere..

    Ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    75

    grazie

    Grazie mille,

    ora mi studio il metodo che hai usato

    ciao ciao

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.