[java] arrayindexoutofboundsexception
Geplaatst: wo 26 mar 2008, 10:31
Bij het maken van een oefening op arrays krijg ik ArrayIndexOutOfBoundsException-foutje.
De vraag: ( komt uit een VB.net leerboekje en ik probeer ze op te lossen in java )
Bij het laatste deel moet ik een keer j=i+1 en een keer i=i+1 om respectievelijk 0de,2de,4de,.. en 1ste,3de,5de,.. getallen te hebben uit mijn array, maar omdat ik i+1 doe ga ik volgens mij buiten mijn array.
Ik heb nog een array bijgemaakt met range [aantalNum+1] en als ik de array [aantalNum] naar [aantalNum+1] kopieer en het afbeeld op het scherm krijg ik nullen te zien.
Btw.. mijn werkwijze is hoogstwaarschijnlijk allesbehalve de juiste.
Bestaat er een syntax om 2 getallen van een array van plaats te wisselen? Iemand suggestie?
De vraag: ( komt uit een VB.net leerboekje en ik probeer ze op te lossen in java )
en mijn code :Beschrijving
Maak een programma dat aan de gebruiker vraag hoeveel getallen er worden ingevoerd.
Creëer een array die net voldoende elementen heeft om dit aantal getallen te stockeren.
Vul de array op met de door de gebruiker ingevoerde getallen.
Breng de inhoud van de array op de console.
Verwissel nu alle twee opeenvolgende getallen van positie. In onderstaand programa-verloop ( waar we 5 elementen in de array hebben ) worden de elementen op indexen 0 en 1 en op de indexen 2 en 3 met elkaar verwisseld. Indien de array een oneven aantal elementen heeft, hoeft het laatste getal niet van positie te veranderen.
Breng nu opnieuw de inhoud van de array op de console.
Zorg ervoor dat je programma exact hetzelfde programma-verloop heeft, met dezelfde output, als hieronder is weergegeven.
Programma-verloop ( invoer van de gebruiker ) :
Count : 5
Number 1 : 11
Number 2 : 22
Number 3 : 33
Number 4 : 44
Number 5 : 55
Numbers Before Shift : 11 22 33 44 55
Numbers After Shift : 22 11 44 33 55
Code: Selecteer alles
public class SwitchInputNumbers {
public static void main(String[] args) {
/*int [] intArray;
//declareer een array van integers
intArray = new int[10]; //hang er een feitelijke array achter, waarin 10 elementen zitten ( zowel maximaal als minimaal, de grens is vast)
for(int i = 0; i < intArray.length; i ++) //Loop de array door tot de maximale lengte, begin natuurlijk bij 0.
{
intArray[i] = i;
//Vul de array met nummers.
System.out.print(intArray[i] + " ");
}
System.out.println();*/
Input l = new Input();
System.out.print("Count : ");
int aantalNum = l.readInt();
int[] numbers; // An array for storing the input values.
int numCt; // The number of numbers saved in the array.
int num; // One of the numbers input by the user.
numbers = new int[aantalNum]; // Space for x ints.
int[] list = new int[aantalNum];
numCt = 0;
// No numbers have been saved yet.
while (true) { // Get the numbers and put them in the array.
System.out.print("Number "+(numCt+1)+" : ");
num = l.readInt();
numbers[numCt] = num;
list[numCt] = num;
numCt++;
if (numCt == aantalNum)
break;
} // end whilelus
System.out.print("Numbers Before Shift : ");
for (int i = 0; i <= numCt-1; i++) {
System.out.print( " " + numbers[i] + " " );
} // end forlus
System.out.println("");
System.out.print("Numbers After Shift : ");
for (int i = -1; i <= numCt-1; i++) {
i=i+1;
int j=-1;
j=i+1;
int a;
a=i;
i=j;
j=a;
System.out.print( " " + numbers[i] + " " );
System.out.print( " " + list[j] + " " );
i=a;
j=i;
} // end forlus
System.out.println("");
} // end main();
} // end class SwitchInputNumbers
Ik heb nog een array bijgemaakt met range [aantalNum+1] en als ik de array [aantalNum] naar [aantalNum+1] kopieer en het afbeeld op het scherm krijg ik nullen te zien.
Btw.. mijn werkwijze is hoogstwaarschijnlijk allesbehalve de juiste.
Bestaat er een syntax om 2 getallen van een array van plaats te wisselen? Iemand suggestie?