Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    704

    [java] java.lang.ArrayIndexOutOfBoundsException

    sono nuovo di java e durante i miei tanti esperimenti per capire il funzionamento di questo linguaggio, trovo problemi nel passare da sintassi come quella di python a questa.

    vi espongo lo script che ho fatto:

    SeqList.java:
    codice:
    class SeqList{
    	public static int[] mult(int x, int y, int z){
    		int[] lista = new int[z];
    		lista[0] = x;
    		lista[1] = y;
    		int ris = 0;
    		for (int i = 1; i < z; i++){
    			ris = lista[i] * lista[i-1];
    			lista[i+1] = ris;
    		}
    		return lista;
    	}
    }
    SeqListTest.java:

    codice:
    class SeqListTest{
    	public static void main(String[]args){
    		int e1 = Integer.parseInt(args[0]);
    		int e2 = Integer.parseInt(args[1]);
    		int e3 = Integer.parseInt(args[2]);
    		int[] end;
    		end = SeqList.mult(e1, e2, e3);
    		for (int i =0; i < end.length; i++){
    			System.out.print(end[i]+", ");
    		}
    		System.out.println();
    	}
    }
    cerco di vedere in output una lista tipo:
    {x,y, x*y, (x*y)y, [(x*y)y](x*y)} tante volte quante indicato da args[o].

    grazie per l'aiuto.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Il problema stà qui (non c'entra nulla la differenza fra Python e Java):
    codice:
    for (int i = 1; i < z; i++){
       ris = lista[i] * lista[i-1];
       lista[i+1] = ris;
    }
    La parte di codice evidenziata porta all'eccezione da te riscontrata: tu parti avendo un array di dimensione z, quindi un array che va da 0 a (z-1). Il ciclo for va da 1 a (z-1) (e fin qui è corretto). Ma cosa succede quando i vale proprio (z-1)? Tenti di assegnare il valore ris alla posizione (i+1) = z dell'array lista. Ma l'array ha come ultimo indice il valore (z-1) e non z. Questo porta l'eccezione ArrayIndexOutOfBoundsException.

    Controlla il tuo codice e cerca di sistemarlo: io non ho guardato a cosa deve fare il tuo codice, ho solo scovato l'errore


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    704
    io mi riferivo alla difficolta' di adattamento da python a java non nel caso specifico, era un introduzione, come dire che sono nuovo in java.

    ti ringrazio per la risposta.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Beh... immagino che ci siano delle difficoltà: a differenza di quanto molti dicono, secondo me Python non è per nulla così vicino a Java... Per chi è abituato (come me) alla programmazione parentesizzata, il fatto che Python usi l'indentazione per strutturare l'annidamento è molto poco user friendly (per non parlare del fatto, poi, che per una programmazione molto pesante questo modo di scrivere i programmi diventa molto scomodo, quando si ha a che fare con righe di codice molto lunghe).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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