對Java數組中去除重復項程序分析


  我作為一個Java菜鳥,只會用簡單的辦法來處理這個問題。如果有大神看到,請略過,感激不盡!

  所以首先先分析這道題目:數組中重復的數據進行刪除,並且要讓數組里的數據按原來的順序排列,中間不能留空。

既然要刪除重復的項目,那么以我現在的功力,只能用循環嵌套來處理。所以做一個循環,在循環體內部再嵌套一個循環,作用就是讓數組的第一個數據和后面的每一個數據做對比。

  然后在內循環體里面做判斷,如果遇到相同數據,那么就讓后面的數據都往前移動一個位置來覆蓋第一個數據,以此類推。因此想要達到這個效果,內層循環里面的判斷里面還要嵌套一個循環來做一件事情,就是讓數據從后往前移動一個位置。注意:如果有重復項,那么當最后一個數據往前移動之后,必須要將最后一個位置置為空,否則就會出現程序打印出來的時候,最后面的幾個數據完全相同。

  具體的細節請看如下程序分析:

public class home4 {
  public static void main(String[] args) {
    String [] arr = {"A","B","C","D","E","F","G","A","B","C"};
    System.out.print("原始數據為:");

    for (int i = 0; i < arr.length; i++) {//打印出原始數據
      System.out.print(" " + arr[i]);
    }

    for (int i = 0; i < arr.length-1; i++) {//對比判斷重復數據
      if (arr[i+1]==null) {//判斷外層數組是否為空,若為空就退出循環
      break;
    }
    for (int j = i+1; j < arr.length; j++) {//進行循環對比,找出重復項目
      if (arr[i].equals(arr[j])) {//遇到重復項,將后面的數據往前移動,覆蓋重復項
        for (int j2 = i; j2 < arr.length-1; j2++) {//等於i的目的是保證每次只往前移動一個位置
          arr[j2]=arr[j2+1];
          }
      arr[arr.length-1] = null;//將最后一個數據置為空,避免重復
      i--;//移動后,再讓當前數據和后面的數據進行對比
      break;//結束本次循環
        }
      }
    }

    System.out.println();
    System.out.print("去掉重復內容后的結果為:");
    for (int i = 0; i < arr.length; i++) {//打印輸出最后的結果
      System.out.print(arr[i]+" ");
    }
  }
}

寫了半天,沒有功能也有苦勞,請默默地點個贊,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM