|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 965
|
[JAVA] String index out of range
Codice:
import java.io.*; public class frase_corretta { public static void main(String[] args) throws IOException { BufferedReader tas = new BufferedReader(new InputStreamReader(System.in)); String car ; String car2 = ""; char j,k; int i; System.out.print("Inserisci una frase da correggere: "); car = tas.readLine(); for( i = 0; i < car.length(); i++ ) { j = car.charAt(i); if ( ( j == car.charAt(i+1) ) && ( j == car.charAt(i+2)) ) {} else car2 += j; if ( ( j == 'z' ) && ( car.charAt(i+1) == j ) && ( car.charAt(i+2) == 'i' ) && (( car.charAt(i+3) == 'a' ) || ( car.charAt(i+3) == 'o' ) )) {} else car2 += j; } System.out.println(car2); } } Codice:
Inserisci una frase da correggere: cazzzarola Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 10 at java.lang.String.charAt(Unknown Source) at frase_corretta.main(frase_corretta.java:16) |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2001
Città: Pisa
Messaggi: 971
|
se gli dai un for da i a stringa.length quando sei all'ultima iterazione e fai il charat di i+1 e i+2 di andrebbe fuori dalla stringa perché la "i" equivale all'ultimo carattere della stringa e i+1 e i+2 sono fuori! e infatti ti dà l'out of bounds...devi fare il ciclo for da 0 a length-2
__________________
www.valeweb.net - fotografare.wordpress.com Sony Vaio FE21H with Fluxbox on Ubuntu |
![]() |
![]() |
![]() |
#3 | |
Bannato
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 965
|
Quote:
|
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Nov 2001
Città: Gavirate (Varese)
Messaggi: 7168
|
Quote:
__________________
·.·´¯`·)»Davide«(·´¯`·.· edivad82:~#/etc/init.d/brain restart - edivad82:~# cd /pub && more beer |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Mar 2001
Città: Pisa
Messaggi: 971
|
e cmq se si vede già che va in out of range meglio non porsi nemmeno la domanda e cambiare il programma!
![]()
__________________
www.valeweb.net - fotografare.wordpress.com Sony Vaio FE21H with Fluxbox on Ubuntu |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2001
Città: Gavirate (Varese)
Messaggi: 7168
|
Quote:
![]()
__________________
·.·´¯`·)»Davide«(·´¯`·.· edivad82:~#/etc/init.d/brain restart - edivad82:~# cd /pub && more beer |
|
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 965
|
maledetti i professori che non ti danno mai le fotttute basi per fare i programmi e quando gli chiedi spiegazioni non sanno mai nulla
ma allora cazzo spiegano a fare? sanguisughe della societa -.-' |
![]() |
![]() |
![]() |
#8 |
Bannato
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 965
|
Codice:
import java.io.*; public class frase_corretta { public static void main(String[] args) throws IOException { BufferedReader tas = new BufferedReader(new InputStreamReader(System.in)); String car ; String car2 = ""; char j,k; int i; System.out.print("Inserisci una frase da correggere: "); car = tas.readLine(); //if( car.charAt(0) == car.charAt(1) ) System.out.print("La frase non puo iniziare con lettere uguali! "); for( i = 2; i < car.length() ; i++ ) { j = car.charAt(i-2); if ( ( j == car.charAt(i-1) ) && ( j == car.charAt(i)) ) {} else car2 += j; if ( ( j == 'z' ) && ( car.charAt(i-1) == j ) && ( car.charAt(i) == 'i' ) && (( car.charAt(i+1) == 'a' ) || ( car.charAt(i+3) == 'o' ) )) {} else car2 += j; } System.out.println(car2); } } Inserisci una frase da correggere: cazzzarola ccaazzzzzaarroo <---- questa è la stringa "corrette" -.-' |
![]() |
![]() |
![]() |
#9 |
Bannato
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 965
|
ok adesso va tutto perfetto solo che, ovviamente se entra nell if o nell else if fuori dal ciclo while nn mi scrive le ultime due lettere. Come posso fare?
Codice:
import java.io.*; public class frase_corretta { public static void main(String[] args) throws IOException { BufferedReader tas = new BufferedReader(new InputStreamReader(System.in)); String car ; String car2 = ""; char j,k=0; int i=2; System.out.print("Inserisci una frase da correggere: "); car = tas.readLine(); if( car.charAt(0) == car.charAt(1) ) { System.out.print("La frase non puo iniziare con lettere uguali! "); k = 1; } while( k == 0 && i < car.length() ) { j = car.charAt(i-2); if ( ( j == car.charAt(i-1) ) && ( j == car.charAt(i)) ) {} else if ( ( j == 'z' ) && ( car.charAt(i-1) == j ) && ( car.charAt(i) == 'i' ) && (( car.charAt(i+1) == 'a' ) || ( car.charAt(i+1) == 'o' ) )) {} else car2 += j; i++; } if ( ( car.charAt(car.length()-3) == car.charAt(car.length()-2) ) && ( car.charAt(car.length()-3) == car.charAt(car.length()-1)) ) {} else if ( ( car.charAt(car.length()-4) == 'z' ) && ( car.charAt(car.length()-3) == 'z' ) && ( car.charAt(car.length()-2) == 'i' ) && (( car.charAt(car.length()-1) == 'a' ) || ( car.charAt(car.length()-1) == 'o' ) )) {} else { car2 += car.charAt(car.length()-2); car2 += car.charAt(car.length()-1); } if( k == 0 ) System.out.print(car2); } } |
![]() |
![]() |
![]() |
#10 |
Bannato
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 965
|
mentre ero li che stavo cercando di dormire mi è venuto un lampo di genio! ecco come ho risolto il programma senza tanti cazzi e lazzi vari
![]() Codice:
import java.io.*; public class frase_corretta { public static void main(String[] args) throws IOException { BufferedReader tas = new BufferedReader(new InputStreamReader(System.in)); String car ; String car2 = ""; char j,k=0; int i=2; System.out.print("Inserisci una frase da correggere: "); car = tas.readLine(); // aggiungo due spazzi finali in modo tale che non vada out of range car += " "; if( car.charAt(0) == car.charAt(1) ) { System.out.print("La frase non puo iniziare con lettere uguali! "); k = 1; } while( k == 0 && i < car.length() ) { j = car.charAt(i-2); if ( ( j == car.charAt(i-1) ) && ( j == car.charAt(i)) ) {} else if ( ( j == 'z' ) && ( car.charAt(i-1) == j ) && ( car.charAt(i) == 'i' ) && (( car.charAt(i+1) == 'a' ) || ( car.charAt(i+1) == 'o' ) )) {} else car2 += j; i++; } if( k == 0 ) System.out.print(car2); } } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:18.