Vai al contenuto

Aiuto programma Java


AR89

Messaggi raccomandati

L'esercizio dice: Costruisci un vettore di boolean che riceve un vettore di interi e restituisce: true: se la somma in posizione minore uguale ad i è pari;

flase se è dispari;

ecco il codice

public class Vettore_somma {

   public static void main (String args[]) {
int []v= {6,8,3,9,2,6};
boolean[] t= costruisciVettore(v);

	stampaArray(t);
   }

public static boolean [] costruisciVettore (int[] a) {
int index= 0;
boolean[] b= new boolean[index];
for (int i=0; i<a.length; i++){

 for (int c=i; c<=i; c--){
  if ((a[i]+a[c])%2==0){
  b[index]=true;}

  else {
  b[index]=false;
  }
  index++;
  }

  }
  return b;
}

public static void stampaArray (boolean[]a) {
System.out.print ("[");
for (int i=0; i<a.length; i++) {
if (i==a.length-1) {
System.out.println (a[i]+"]");
}
else {
System.out.print (a[i]+",");
}//else
}//for
}/* metodo*/
}

questo è l'errore che mi dà Xcode :Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1

at Vettore_somma.costruisciVettore(Vettore_somma.java:25)

at Vettore_somma.main(Vettore_somma.java:14)

Qualcuno potrebbe aiutarmi?:mazzodifiori:

Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80.

Link al commento
Condividi su altri siti

L'errore è in questa riga:

boolean[] b= new boolean[index];

al posto di index metti 6, quindi:

boolean[] b = new boolean[6];

L' eccezione ArrayIndexOutOfBoundsException significa che sei andato fuori dai limiti del vettore

La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché!

Link al commento
Condividi su altri siti

adesso compila?

La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché!

Link al commento
Condividi su altri siti

Non ho ben capito cosa debba fare questo programma.

Cosa significa la somma in posizione minore uguale ad i?

La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché!

Link al commento
Condividi su altri siti

for (int c=i; c<=i; c--)

qui c'è un altro errore

La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché!

Link al commento
Condividi su altri siti

no, mi ridà lo stesso errore di prima.

Quell'Index inoltre mi serve come contatore per creare il nuovo vettore con le giuste dimensioni a seconda del vettore che arriva in entrata.

Lo avevo capito, ma quando crei il vettore, index è inizializzato a 0 e quindi è come se crei un vettore di 0 elementi,quindi non crei niente.

Al posto di index puoi usare a.lenght

La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché!

Link al commento
Condividi su altri siti

Non ho ben capito cosa debba fare questo programma.

Cosa significa la somma in posizione minore uguale ad i?

i è un numero intero che scorre lungo il vettore in entrata (è un semplice contatore di un for). Ti faccio un esempio: ricevo il vettore a (3,6,9,7)

eseguendo il metodo dovrò restituire il vettore b (false, false, true, false)

Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80.

Link al commento
Condividi su altri siti

Lo avevo capito, ma quando crei il vettore, index è inizializzato a 0 e quindi è come se crei un vettore di 0 elementi,quindi non crei niente.

Al posto di index puoi usare a.lenght

anche usando quello non funziona, ci ho già provato. Cmq poi avrei degli spazi vuoti.

Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80.

Link al commento
Condividi su altri siti

In sostanza devi sommare il valore corrente con tutti i precedenti e verificare se la somma da un valore pari o dispari?

La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché!

Link al commento
Condividi su altri siti

anche usando quello non funziona, ci ho già provato. Cmq poi avrei degli spazi vuoti.

Si lo so,perchè l'errore è nel for più interno,perchè quando i è zero e lo assegni a c nel for non puoi decrementare c,diventerebbe -1 che è fuori dai confini del vettore.

Cmq se devi fare quello che ti ho scritto nel post sopra questo codice non funziona.

La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché!

Link al commento
Condividi su altri siti

ok allora devi riscrivere il codice del for più interno.

Dammi 5 minuti che te lo posto

La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché!

Link al commento
Condividi su altri siti

Ecco perchè:

int index= 0;
boolean[] b= new boolean[index];

Crei un array con.. 0 elementi o_O non dovrebbe essere di lunghezza pari ad a, per tenere tutti i true o false che dici tu?

Il secondo for poi come fa notare kaioshin non ha molto senso.. è completamente errato concettualmente. A che ti serve poi un doppio ciclo? Si può fare con uno solo, ad esempio così:

int somma = 0;
for (int i=0; i<a.length; i++) {
  somma += a[i];
  b[i] = (somma%2 == 0);
}

Due osservazioni: calcoli la somma ogni volta aggiungendo semplicemente il nuovo numero, e per assegnare true o false basta assegnare alla posizione dell'array di b il risultati dell'espressione booleana (somma%2 == 0) :mhh:

Ps: per Java consiglierei l'utilizzo di Eclipse o Netbeans, piuttosto che Xcode!

Just when things went right, it doesn't mean they were always wrong

~

» Use Your Illusion «

Link al commento
Condividi su altri siti

public static boolean [] costruisciVettore (int[] a) {

boolean[] b= new boolean[a.length];

for (int i=0; i<a.length; i++){

int somma = 0;

for (int c=0; c<=i; c++){

somma += a[c];

}

if(somma%2==0)

b=true;

else

b=false;

}

return b;

}

La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché!

Link al commento
Condividi su altri siti

Ecco perchè:

int index= 0;
boolean[] b= new boolean[index];

Crei un array con.. 0 elementi o_O non dovrebbe essere di lunghezza pari ad a, per tenere tutti i true o false che dici tu?

Il secondo for poi come fa notare kaioshin non ha molto senso.. è completamente errato concettualmente. A che ti serve poi un doppio ciclo? Si può fare con uno solo, ad esempio così:

int somma = 0;
for (int i=0; i<a.length; i++) {
  somma += a[i];
  b[i] = (somma%2 == 0);
}

Due osservazioni: calcoli la somma ogni volta aggiungendo semplicemente il nuovo numero, e per assegnare true o false basta assegnare alla posizione dell'array di b il risultati dell'espressione booleana (somma%2 == 0) :mhh:

Ps: per Java consiglierei l'utilizzo di Eclipse o Netbeans, piuttosto che Xcode!

Silver il tuo codice è sicuramente migliore però io ho preferito correggerlo seguendo il ragionamento logico dell'utente.Magari è alle prime armi,e potrebbe confondersi.

Comunque per java io dico eclipse,mi sono trovato davvero bene

La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché!

Link al commento
Condividi su altri siti

Xcode è probabilmente il migliore,ma per programmi così semplici e piccoli è completamente inutile.

a questi livelli sarebbe quasi preferibile utilizzare un editor di testo avanzato come Smultron e compilare da terminale

La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché!

Link al commento
Condividi su altri siti

Xcode è probabilmente il migliore,ma per programmi così semplici e piccoli è completamente inutile.

a questi livelli sarebbe quasi preferibile utilizzare un editor di testo avanzato come Smultron e compilare da terminale

La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché!

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...