Newsgroup: it.comp.java
Titolo: Esercizio: errore che non capisco.

Ciao, il seg. pezzo di codice mi da un errore:
case 2:
          try{
            System.out.println("\nInserisci il criterio di ricerca\n");
            corretto=false;
            while(corretto==false){
              InputStreamReader isr2=new InputStreamReader(System.in);
              BufferedReader br2=new BufferedReader(isr2);
              String s=br2.readLine();
              if(s.charAt(0)>=65&&s.charAt(0)<=113&&s.equals("")==false){
                rubrica.ricerca(s.charAt(0));
                corretto=true;
              }else{
                System.out.println("Errore. Carattere non valido");
              }
            }
          }catch(IOException err){
            System.out.println("ERRORE. Nessuna scelta effettuata.\n");
          }
break;
OUTPUT DOS:
______________________________________
          AGENDA TELEFONICA 1.0
_______________________________________
                MENU
1.Inserisci il nome ed il telefono
2.Ricerca nominativo per carattere.
3.Ricerca nominativo per sottostringa.
4.Visualizza nominativi.
5.Cancella nominativi.
6.Esci
2
Inserisci il criterio di ricerca
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String
ind
ex out of range: 0
        at java.lang.String.charAt(String.java:455)
        at AgendaTelefonicaMain.main(AgendaTelefonicaMain.java:59)
Press any key to continue...
Accade come potete notare quando non inserisco nessun criterio di ricerca.
Lo dovrei intercettare ma non avviene. Dove sbaglio?
Grazie a tutti e ciao.

  Dove sbaglio?
[CUT]
Il problema č che tu provi ad accedere al primo elemento di una stringa
quando tale elemento non c'e' ! ...
Il fatto che non riesci a intercettare l'eccezione č perchč tu esegui il
catch su un tipo di eccezione IOException e quindi non riesci a intercettare
l'eccezione  StringIndexOutOfBoundException (che non č e non deriva dalla
IOException).
Per far funzionare il tuo codice prova a modificare
catch( IOException err )
in
catch( Exception err )
Non l'ho provato ma cosě dovrebbe andare ....
Seconda alternativa prima di accedere al carattere nella prima posizione
verifichi che la stringa ABBIA effettivamente tale carattere ...
Ciao ciao
Dany
--
Daniele Piras
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If at first the idea is not absurd then there is no hope for it. - Albert
Einstein
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

              if(s.charAt(0)>=65&&s.charAt(0)<=113&&s.equals("")==false){
[CUT]
Oltre al già suggerito (e necessario) controllo sull'esistenza della 
stringa che cerchi di leggere, ti suggerico di utilizzare, nella 
condizione dell'if, i metodi della classe Character.
Usare dei "magic number" è proprio brutto oltre che molto... "error 
prone".
HTH
-- 
Ciao
	Fabrizio C.

"Fabrizio Camera" <f.came...@Mtiscali.it> ha scritto nel messaggio
news:MPG.16e704d79...@powernews.libero.it...

Grazie ma ancora non abbiamo studiato la classe Character.

 verifichi che la stringa ABBIA effettivamente tale carattere ...
Mmmm.............si in effetti così funziona......però poi la chiamata al
metodo rimane...........ma non sarà un problema risolvere tale problema.
Ciao e grazie.

Grazie ma ancora non abbiamo studiato la classe Character.
Ah, si tratta di studio.
Pensi che ti verranno spiegate tutte le classi del jdk? Auguri :-)
-- 
Ciao
	Fabrizio C.

"Fabrizio Camera" <f.came...@Mtiscali.it> ha scritto nel messaggio
news:MPG.16e76ccd...@powernews.libero.it...

No, affatto, me la studierň.
Tuttavia sono ancora solo un principiante quindi devo ancora capire bene che
tutto in Java č rammucchiato in classi, TUTTO.
E' solo una forma mentis che ancora mi manca.
Ciao e grazie.


Non so se e' colpa degli studenti o dei professori,
pero' mi vengono i brividi quando penso a persone
"buttate" ad usare un linguaggio di programmazione OO
senza (almeno in apparenza) un po' di fondamenti, non
dico certo di OOD, ma almeno di OOP!
Saluti
Roberto
-- 
+---------------------------+
| Roberto Bagnoli           |
| 
robe...@comune.modena.it
 |
+---------------------------+