2015-05-16 5 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); 
    } 

} 

Этот выход:

Starter массив: 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

+0

и где put для дубликатов чисел для (int i = 0; i

+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

Я пробовал, но дал мне ошибку положительный = pos.toArray (pos); negative = pos.toArray (отрицательный); хорошо спасибо, я пытаюсь исправить то, что вы сделали –

Смежные вопросы