有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java通过两个整数数组对正整数和负整数进行排序

我们给出了以下字符串:

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;

             }          

        }

    }           
}

共 (3) 个答案

  1. # 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]);
                }
            }
    
  2. # 2 楼答案

    如果我正确理解了你的问题,你想制作包含正数和负数的新数组

    使用您的变量名,我会选择如下解决方案:

    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);
        }
    
    }
    

    这将产生:

    首发阵容:1232-2243545-4-5543120-999-87

    正阵:123043545 43120

    负片阵列:-22-4-55-999-87

  3. # 3 楼答案

    试试看

     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;
    
            }          
    
        }