簡體   English   中英

通過兩個整數數組對正整數和負整數進行排序

[英]sorting positive and negative integers through two integer arrays

我們給出了以下字符串:

int [] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87}.

必須有兩行,一行用於存儲,另一行用於字符串數組的負元素,並提取必要的邏輯來執行適當的元素並將它們放置在適當的線程中。

換句話說,在給定的線陣列中,要獲得所有正元素並將其放置在單獨的行中。 此外,要獲得的所有元素和要放置在單獨的行中的底片。

您還需要確定字符串數組中的重復項數。

當然,編寫適用於任意數量整數的功能是必要的。 但是我的老師說我的代碼沒有目標行,他給了我一個例子:目標字符串是兩個額外的行,你將放置隔離的正值和負值。 例如,如果您有一個字符串:

int arr = {1,2,3,4, -1, -2, -3, -4}

那么目標范圍將是:

int pos = {1,2,3,4}
int hc = {-1, -2, -3, -4}

當然,這應該使它可編程而不是硬編碼,如本例所示。 現在我該如何改進我的代碼?

public static void main(String[] args) {

    int array1[]= {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};

    System.out.println("Array 1 :");

    Arrays.sort(array1);

    for (int positive: array1) {

        if (positive >= -1)
            System.out.println("Positive numbers :" + positive+ "\t");
        }
        System.out.println();
        System.out.println("Array 2 :");

        for (int negative: array1) {
            if (negative >= -1) {

            }else{ System.out.println("Negative numbers :" +negative);
            }

        } 
        System.out.println();

        for (int i = 0; i < array1.length -1; i++) { 
             if (array1[i + 1 ] == array1[i]) {
                 System.out.println("Duplicate element found :" + array1[i]);
                 i = i + 1;

             }          

        }

    }           
}

如果我正確理解了您的問題,您想創建包含正數和負數的新數組,

使用您的變量名稱,我會采用類似以下解決方案的方法:

public static void main(String[] args) {

    // Declare variables
    int[] array1 = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87}, pos, hc;
    int positive = 0, negative = 0;

    // Check how many positive and/or negative numbers
    for (int i : array1)
    {
        if (i >= 0)
        {
            positive++;
        } else 
        {
            negative++;
        }
    }

    // Make exact size arrays
    pos = new int[positive];
    hc = new int[negative];

    // Reset variables for new purpose
    positive = 0;
    negative = 0;

    //Put numbers in correct array
    for (int i : array1)
    {
        if (i >= 0)
        {
            pos[positive] = i;
            positive++;
        } else
        {
            hc[negative] = i;
            negative++;
        }
    }

    // Display arrays
    System.out.print("Starter array: ");
    for (int i: array1)
    {
        System.out.print(" " + i);
    }

    System.out.print("\nPositive array: ");
    for (int i: pos)
    {
        System.out.print(" " + i);
    }

    System.out.print("\nNegative array: ");
    for (int i: hc)
    {
        System.out.print(" " + i);
    }

}

這輸出:

起始數組:12 23 -22 0 43 545 -4 -55 43 12 0 -999 -87

正數組:12 23 0 43 545 43 12 0

負數組:-22 -4 -55 -999 -87

嘗試

 int array1[]= {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};

 System.out.println("Array 1 :");

 Arrays.sort(array1);
 ArrayList<Integer> pos = new ArrayList<Integer>();
 ArrayList<Integer> neg = new ArrayList<Integer>();
 for (int num: array1){
  if (num>= 0)
       pos.add(num);
   else
       neg.add(num);
}
 System.out.println();

 if(pos.size()>0)
 {
 int[] positive = new int[pos.size()];
 positive = pos.toArray(positive);
 pos=null;
 for (int num: positive)
      System.out.println("Positive numbers :" + num+ "\t");
 }

 if(neg.size()>0)
 {
 int[] negative = new int[neg.size()];   
 negative = pos.toArray(negative);
 neg=null;
 for (int num: negative)
      System.out.println("Negative numbers :" + num+ "\t");
 }

for (int i = 0; i < array1.length -1; i++) { 
    if (array1[i + 1 ] == array1[i]) {
        System.out.println("Duplicate element found :" + array1[i]);
        i = i + 1;

        }          

    }
   sepratePositiveNegative(int[] arr) {
        int size  = arr.length;
        int k =0;
        for(int i =0;i <size; i++){
            int temp = 0;
            if(arr[i]<0) {
                temp = arr[i];
                arr[i] = arr[k];
                arr[k] = temp;
                k++;
                System.out.println(arr[i]);
            }
        }

暫無
暫無

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

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