0

mainでswapメソッドを呼び出しますが、何も変更されません。私は何が間違っているのですか?

public static void main(String[] args){


    int mainArr[] = new int[20];

    for(int i = 0; i<mainArr.length; i++){
    swapper(3, 14, mainArr);
    System.out.print(i + mainArr[i] + " ");
    }
}


public static void swapper (int a, int b, int[] mainArr){
    int t = mainArr[a];
    mainArr[a] = mainArr[b];
    mainArr[b] = t;
}

私のコードは

0, 1,  2, 3,...19 

通常の昇順で、4番目と15番目の要素を入れ替えます。

4

4 に答える 4

5

メソッド呼び出しを移動します:-

swapper(3, 14, mainArr);

forループの外側。なぜなら、ループがeven何度も実行されても、配列には影響しないからです。

また、実際に要素を交換する前に、まず配列を初期化する必要があります。を呼び出す前に行う必要があることswapper

for(int i = 0; i<mainArr.length; i++){
    mainArr[i] = i;
}

swapper(3, 14, mainArr);

for(int i = 0; i<mainArr.length; i++){
    System.out.print(i + mainArr[i] + " ");
}
于 2012-10-24T19:56:07.220 に答える
1

そのようにコードを書く:

int mainArr[] = new int[20];  

for(int i =0; i <mainArr.length;i++)  
{  
    mainArr[i]=i;
}  

swapper(3,14,mainArr); 

問題を解決します。問題は、たまたまスワップを偶数回呼び出していたため、まったく効果がなかったということです。

于 2012-10-24T19:56:32.383 に答える
0

配列に要素があるのと同じ回数、スワッパーを呼び出しています。

  • 配列の長さが偶数の場合、何も変更されません
  • 配列の長さが奇数の場合、変更されます
于 2012-10-24T19:56:34.177 に答える
0
public class swapInt
{ 
public static void main(String args[])
{


swap(new int[]{2,3,5,6,8},1,3);


}
public static void swap(int[]a,int i,int j)
{
    int temp=a[i];
    a[i]= a[j];
    a[j]=temp;
    for(int b=0;b<a.length;b++)
    {

    System.out.println(a[b]);
    }
 }
}
于 2016-05-31T10:54:16.917 に答える