Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-12-2004, 18:00   #1
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
[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);
				
				
	}
}
Ecco l'errore:
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)
Dove ho sbagliato? se metto sotto commento il primo if e else tutto funziona perfetto.
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2004, 18:14   #2
bettola
Senior Member
 
L'Avatar di bettola
 
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
bettola è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2004, 18:20   #3
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
Quote:
Originariamente inviato da bettola
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
come gia detto nella mio primo post, come mai allora se metto il primo if sotto commento il secondo if che usa (i+3) non mi da alcun errore di out of range?
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2004, 18:29   #4
edivad82
Senior Member
 
L'Avatar di edivad82
 
Iscritto dal: Nov 2001
Città: Gavirate (Varese)
Messaggi: 7168
Quote:
Originariamente inviato da StErMiNeiToR
come gia detto nella mio primo post, come mai allora se metto il primo if sotto commento il secondo if che usa (i+3) non mi da alcun errore di out of range?
perchè in teoria usa lo short evaluation e quindi in un and se la prima condizione è falsa, tutta la frase è falsa e non controlla le altre condizioni
__________________
·.·´¯`·)»Davide«(·´¯`·.·
edivad82:~#/etc/init.d/brain restart - edivad82:~# cd /pub && more beer
edivad82 è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2004, 18:44   #5
bettola
Senior Member
 
L'Avatar di bettola
 
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
bettola è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2004, 18:55   #6
edivad82
Senior Member
 
L'Avatar di edivad82
 
Iscritto dal: Nov 2001
Città: Gavirate (Varese)
Messaggi: 7168
Quote:
Originariamente inviato da bettola
e cmq se si vede già che va in out of range meglio non porsi nemmeno la domanda e cambiare il programma!
ovvio
__________________
·.·´¯`·)»Davide«(·´¯`·.·
edivad82:~#/etc/init.d/brain restart - edivad82:~# cd /pub && more beer
edivad82 è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2004, 19:00   #7
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
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 -.-'
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2004, 19:10   #8
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
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);
				
				
	}
}
esempio:

Inserisci una frase da correggere: cazzzarola
ccaazzzzzaarroo <---- questa è la stringa "corrette" -.-'
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2004, 21:57   #9
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
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);				
	}
}
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2004, 22:51   #10
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
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);				
	}
}
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Non solo EV, ma anche IA: Panasonic inau...
iPhone Duo, il debutto del pieghevole di...
Atlas 960E SuperPoD, la risposta di Huaw...
IA militare e nucleare: esperti USA e ci...
Dieci mini-reattori nucleari in Europa d...
CONTROL Resonant su PC: Path Tracing, Ra...
ColorOS 17 arriva su circa 90 dispositiv...
GTA VI, il multiplayer potrebbe debuttar...
Aggiornamento KB5002914 rompe Excel: ecc...
Processo Huawei a Brooklyn: l'FBI mostra...
WhatsApp introduce nuovi temi per le cha...
NVIDIA, Google e Emerald AI uniscono le ...
iPhone 18 Pro Max, il test sulla vapor c...
Fine estate in giardino: le proposte sco...
Batterie allo stato solido dietro l'ango...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v