0

したがって、ユーザーが入力したい値の数を指定し、その値を配列に入力すると、配列が出力される Java プログラムを作成する必要があります。次に、配列内の要素を反転し (印刷を反転したり、新しい配列を作成したりしないでください)、値をもう一度印刷する必要があります。これは私が持っている次のコードです:

package reversearray;

import java.util.*;

public class Swap_main {

    /**
     * Taylor Marino
     */
    public static void main(String[] args) {
        int arraysize = 0, junk, junk2;
        Scanner reader = new Scanner(System.in);
        System.out.println("How many values are you going to enter?");
        arraysize = reader.nextInt();
        int[] array = new int[arraysize];
        System.out.println("You will now be asked to enter your values, one at a time");
        for(int counter = 0; counter < arraysize; counter++){
            System.out.println("Enter next value");
            array[counter] = reader.nextInt();
        }
        System.out.println("The values you entered are: ");
        for(int counter2 = 0; counter2 < arraysize; counter2++)
            System.out.print(array[counter2] + ", ");
        for(int counter3 = 0, counter4 = arraysize; counter3 != counter4; counter3++, counter4--){
            junk = array[counter3];
            junk2 = array[counter4];
            array[counter4] = junk;
            array[counter3] = junk2;
        }
        System.out.println("The values you entered are (in reverse order): ");
        for(int counter5 = 0; counter5 < arraysize; counter5++)
            System.out.print(array[counter5] + ", ");
    }

}

ただし、このループでエラーが発生します。

        for(int counter3 = 0, counter4 = arraysize; counter3 != counter4; counter3++, counter4--){
            junk = array[counter3];
            junk2 = array[counter4];
            array[counter4] = junk;
            array[counter3] = junk2;
        }

ここで何が問題なのかわかりませんが、何が間違っているのかにエラーがあると言われarray[counter4] = junk; ていますか?

4

4 に答える 4

3

配列には0から長さ-1までのインデックスが付けられるため、ArrayOutOfBoundsExceptionが発生します。counter4=arraysize-1から始めます。

編集:また、あなたは変更する必要があります

counter3 != counter4

counter3 < counter4

奇数の長さの配列では、最初の条件で真になることはありません。

于 2013-02-01T18:23:07.610 に答える
0

変化する

for(int counter3 = 0, counter4 = arraysize

for(int counter3 = 0, counter4 = arraysize-1

于 2013-02-01T18:23:33.517 に答える
0

試す

for(int counter3 = 0, counter4 = arraysize -1 ; counter3 < counter4 ; counter3++, counter4--){

できます。例外はなくなりました。

于 2013-02-01T18:29:37.587 に答える