簡體   English   中英

如何在數組中交換兩個整數,而我的方法從main中獲取兩個整數和一個數組?

[英]How do I swap two integers in an array, where my method takes in two integers and an array from main?

我在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個元素。

移動方法調用:-

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] + " ");
}

這樣編寫代碼:

int mainArr[] = new int[20];  

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

swapper(3,14,mainArr); 

將解決問題。 問題是您恰巧調用了swap偶數次,因此完全沒有效果。

您調用交換器的次數與數組中存在元素的次數相同。

  • 如果數組的長度是偶數,則什么都不會改變
  • 如果數組的長度為奇數,它將改變
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]);
    }
 }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM