Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Java] errore durante l'esecuzione

    Ciao. E da un po' che non utilizzo il linguaggio Java. Sto realizzando un piccolo programma a scopo didattico.
    Durante l'esecuzione rimane in loop nel primo ciclo do...while e mi riscontra l'errore java.lang.ArrayIndexOutOfBoundsException.

    Qui sotto vi metto un estratto semplificato dal programma. Quali potrebbero essere le cause? Grazie mille


    codice:
    import java.util.Scanner;
    import java.io.*;
    
    
    class Quadrati
    {
        public static void main (String[] args)
        {
            Scanner input = new Scanner(System.in);
            int n;
            do
            {
                System.out.println("Inserisci un numero intero positivo: ");
                n= input.nextInt();
            }
            while (n>=0);
            int i;
            int [] q = new int [n];
            for (i=1; i<=n; i++)
            {
                q[i]=((i-1)*(i-1))+(2*i-1);
            };
            for (i=n; i<=0; i--) 
            {
                System.out.print(q[i] + " ");
            }
            
        }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    codice:
    Scanner input = new Scanner(System.in);
            int n;
            do
            {
                System.out.println("Inserisci un numero intero positivo: ");
                n= input.nextInt();
            }
            while (n<=0);
    
            int[] q = new int [n];
            for (int x=1; x<=10; x++)
                q[x-1]=((x-1)*(x-1))+(2*x-1);
            for (int i : q)
                System.out.print(i  + " ");
    Nel codice originale hai sbagliato due confronti numerici
    codice:
    while(n<=0);
    

    non >= altrimenti ti resta nel while fino a quando non inserici un numero negativo, poi
    codice:
    for (int x=1; x<=10; x++)
         q[x-1]=((x-1)*(x-1))+(2*x-1);
    

    gli array partono da 0 per per l'indice, quindi l'ultima chiave in un array di 10 elementi è 9


  3. #3
    Grazie mille per l'aiuto.

    codice:
            int [] q = new int [n+1];
            int i;
            q[0]=0;
            for (i=1; i<=n; i++)
                q[i]=((i-1)*(i-1))+(2*i-1);
            for (i=n; i<=1; i--) 
                System.out.print(q[i] + " ");
    Ho modificato in questo modo il codice, poiché l'indice zero deve avere gia' un valore assegnato.

    Questa volta si avvia senza problemi, ma una volta inserito la dimensione dell'array in input, il programma termina senza restituire risultato.
    Ultima modifica di katrmatteo; 18-10-2014 a 09:35

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Hai risbagliato il confronto numerico
    codice:
    for(i=n; i>=1; i--) 
                System.out.print(q[i]+" ");
    

    Dato che parti dal fondo dell'array la condizione deve essere >= cioè finchè i è maggiore o uguale a 1

  5. #5
    Quote Originariamente inviata da RoTeam Visualizza il messaggio
    Hai risbagliato il confronto numerico
    codice:
    for(i=n; i>=1; i--) 
                System.out.print(q[i]+" ");
    

    Dato che parti dal fondo dell'array la condizione deve essere >= cioè finchè i è maggiore o uguale a 1
    Che imbranato, grazie ancora per l'aiuto devo rifarmi un ripasso generale prima di passare ad implementarlo con una piccola interfaccia grafica

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.