Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543

    Memorizzare una stringa in un array e stamparlo

    Salve a tutti,
    vorrei creare un programmino java che estragga delle frasi da un elenco (precedentemente dichiarato).
    Ho pensato di procedere in questo modo:
    codice:
    import java.util.*;
    public class FrasiRandom
    {
    	static String [] frasi = {"1c", "2c", "3c", "4c", "5c", "6c", "7c", "8c", "9c", "10c"};
    
    	public static void main (String[] args)
    	{
    		Random rand = new Random();
    
    		String [] str;
    		str = new String[9];
    
    		int casuale = rand.nextInt(frasi.length);
    
    		int i;
    		for (i=1; i<=9; i++)
    		{
    			/*System.out.print(frasi[casuale]);
    			System.out.print(" ");*/
    			casuale = rand.nextInt(frasi.length);
    			str[i] = frasi[casuale];
    		}
    		System.out.println("Alea iacta est!");
    		System.out.print(str[i]);
    
    	}
    
    }
    compila, ma non esegue generando il seguento errore:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9 at FrasiRandom.main(FrasiRandom.java:25) Premere un tasto per continuare . . .
    Vorrei solo avere piccoli suggerimenti e non la "pappa pronta" perchè voglio arrivarci da solo.
    "To iterate is human, to recurse, divine." (R.(Heller))

  2. #2
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    il secondo array è + piccolo e tu lo scorri da 1 a 9 ma in realtà vanno da 0 a 8
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  3. #3
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Ho provato a cambiare gli indici del ciclo for, mettendo
    codice:
    for(i=0; i<=8; i++)
    ma non va.
    In compenso, però mi stampa almeno il primo Messaggio "Alea iacta est!"
    "To iterate is human, to recurse, divine." (R.(Heller))

  4. #4
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da the-bit
    Ho provato a cambiare gli indici del ciclo for, mettendo
    codice:
    for(i=0; i<=8; i++)
    ma non va.
    In compenso, però mi stampa almeno il primo Messaggio "Alea iacta est!"
    un'altra cosa quando prendi casualmente l'elemento dell'altro array devi fare frasi.length-1(sennò ti prende pure il 10 che nn è valido)
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  5. #5
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Ci ho provato
    codice:
    ... 
    casuale = rand.nextInt(frasi.length-1);
    str[i] = frasi[casuale];...

    ma niente da fare.
    "To iterate is human, to recurse, divine." (R.(Heller))

  6. #6
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da the-bit
    Ci ho provato
    codice:
    ... 
    casuale = rand.nextInt(frasi.length-1);
    str[i] = frasi[casuale];...

    ma niente da fare.
    che errore ti da ora?
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  7. #7
    l'errore è nell'ultima stampa.
    non puoi stampare l'elemento della posizione del array.lenght in quanto non esiste...

  8. #8
    Originariamente inviato da darksoullight88
    l'errore è nell'ultima stampa.
    non puoi stampare l'elemento della posizione del array.lenght in quanto non esiste...
    Esatto infatti "i" quando esce dal for è 9 e quindi alla stampa schianta.
    prova "i-1"

  9. #9
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Rieccoci ragazzi,
    sembra funzionare. Ho modificato il for così:
    codice:
    for (i=0; i<=8; i++)
    		{
    			/*System.out.print(frasi[casuale]);
    			System.out.print(" ");*/
    			casuale = rand.nextInt(frasi.length);
    			str[i] = frasi[casuale];
    			System.out.print(str[i]+" ");
    
    		}
    e stampa effetivamente 9 valori.
    Ora, però, mi sono reso conto che quello che mi serve è memorizzare tutte le cifre estratte in qualche parte perchè, come è ora, non fa altro che stamparle a ciclo.
    Infatti se, dopo il ciclo for, ci metto un
    codice:
    System.out.print(str[i]+" ");
    Mi stampa solo l'ultima cifra estratta.

    Mi consigliate una stringa o un array?
    "To iterate is human, to recurse, divine." (R.(Heller))

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 © 2026 vBulletin Solutions, Inc. All rights reserved.