2015-05-16 73 views
-1

正和负整数我们得到以下字符串:排序通过两个整数数组

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; 

      }   

     } 

    }   
} 

回答

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 -87 -999

正阵列:12 23 0 43 545 43 12 0

负数组:-22 - 4 -55 -999 -87

+0

和其中一个放置重复数字为(int i = 0;我

+0

对不起,您的问题是关于将数组排序为正数组和负数组。如果你还想检测重复项,我会在排序循环内写入第二个for循环,计算该值在数组中的表示次数。然后将不止一次表示的值保存到第四个数组中。 – atCordain

0

尝试

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; 

     }   

    } 
+0

我试过但给了我一个错误positive = pos.toArray(pos); negative = pos.toArray(negative);好的,谢谢我试图修复你所做的 –