Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过两个整数数组对正整数和负整数进行排序_Java_Arrays_Sorting - Fatal编程技术网

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

Java 通过两个整数数组对正整数和负整数进行排序,java,arrays,sorting,Java,Arrays,Sorting,我们给出了以下字符串: int [] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87}. 必须有两行,一行用于存储,另一行用于字符串数组的负元素,并提取将执行适当元素的必要逻辑,并将它们放置在适当的线程中 换句话说,在给定的线性数组中,所有的正元素都将被获得,并放置在一个单独的行中。此外,所有要获取的元素和负片都要放在一个单独的行中 您还需要确定字符串数组中的重复数 当然,编写的函数必须适用于任意数量的整数。但是我

我们给出了以下字符串:

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;

             }          

        }

    }           
}
publicstaticvoidmain(字符串[]args){
int array1[]={12,23,-22,0,43545,-4,-55,43,12,0,-999,-87};
System.out.println(“数组1:”);
Arrays.sort(array1);
用于(整数正:数组1){
如果(正>=-1)
System.out.println(“正数:“+正数+”\t”);
}
System.out.println();
System.out.println(“数组2:”);
for(整数负:数组1){
如果(负>=-1){
}else{System.out.println(“负数:“+负数”);
}
} 
System.out.println();
对于(inti=0;i
试试看

 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;

        }          

    }
intarray1[]={12,23,-22,0,43545,-4,-55,43,12,0,-999,-87};
System.out.println(“数组1:”);
Arrays.sort(array1);
ArrayList pos=新的ArrayList();
ArrayList neg=新的ArrayList();
for(整数:数组1){
如果(num>=0)
pos.add(num);
其他的
负相加(num);
}
System.out.println();
如果(位置大小()>0)
{
int[]正=新int[pos.size()];
正=位置到阵列(正);
pos=null;
for(整数:正)
System.out.println(“正数:“+num+”\t”);
}
如果(负大小()>0)
{
int[]负=新的int[neg.size()];
负=位置toArray(负);
neg=null;
for(整数:负)
System.out.println(“负数:“+num+”\t”);
}
对于(inti=0;i
如果我正确理解了您的问题,您希望创建包含正数和负数的新数组

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

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

sepratePositiveNegative(int[]arr){
   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]);
            }
        }
int size=arr.length; int k=0;
对于(int i=0;我试过了,但给了我一个错误,正数=pos.toArray(pos);负数=pos.toArray(负数);好的,谢谢,我试着修复你所做的,以及(int i=0;i