2015-12-18 4 views
-1

У меня есть вопрос, и я предоставлю свой код ниже. Мне нужно, чтобы последовательности последовательностей были как положительные, так и отрицательные элементы массива. Может ли кто-нибудь сказать мне, что мне нужно изменить в моем коде, чтобы сделать это?Динамические массивы JAVA

import java.util.Scanner; 

class DynamicArray { 
    public static void main(String[] args) {  
     int i,a,b; 
     System.out.println("Enter the limit of array :"); 
     Scanner s = new Scanner(System.in); 
     int limit = s.nextInt(); 
     int [] array1 = new int[limit];//{12,23, -22, 0, 43,545, -4, -55,43, 12,0, -999, -87 

     System.out.println("Enter the numbers"); 
     for(i=0; i<limit; i++) 
     { 
      array1[i] = s.nextInt(); 
     } 
     int [] arrayPlus = new int[limit]; 
     int [] arrayMinus = new int[limit]; 

     a=b=0; 

     for (i = 0; i < limit; i++) { 
      if (array1[i] > 0 || array1[i] == 0) { 
       arrayPlus[a] = array1[i]; 
       a++; 
      } else { 
       arrayMinus[b] = array1[i]; 
       b++; 
      } 
     } 
     System.out.println("Positive array numbers"); 
     for (i = 0; i < a; i++) { 
      System.out.println(arrayPlus[i]);} 
     System.out.println(""); 

     System.out.println("Negative array numbers"); 
     for (i = 0; i < b; i++) { 
      System.out.println(arrayMinus[i]);} 
    } 
} 
+1

Я не уверен, что ваш вопрос. Просьба уточнить. Согласно названию, это может быть дубликат этого вопроса: http://stackoverflow.com/questions/2426671/variable-length-dynamic-arrays-in-java – fabian

+0

Проблема в том, что Im не любил использовать ArrayList –

ответ

-1

первую очередь вы можете упростить это:

if (array1[i] > 0 || array1[i] == 0) { 

в

if (array1[i] >= 0) { 

второй удалить эти переменные. есть нет необходимости:

int i, a, b; 

в каждом for loop определяют тип i:

for (int i = 0; 

следующий вы не знаете, количество положительных и отрицательных чисел, поэтому я предлагаю вам использовать список вместо массивы: изменение

int [] arrayPlus = new int[limit]; 
    int [] arrayMinus = new int[limit]; 

в

List<Integer> arrayPlus = new ArrayList<>(); 
    List<Integer> arrayMinus = new ArrayList<>(); 

добавить элементы с:

arrayPlus.add(array1[i]); 
arrayMinus.add(array1[i]); 

и читать элементы с:

System.out.println(arrayPlus.get(i)); 
System.out.println(arrayMinus.get(i)); 

перебирать списки с:

for (int i = 0; i < arrayPlus.size(); i++) { 

ОБЩИЙ:

import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 

class DynamicArray { 
    public static void main(String[] args) { 

    System.out.println("Enter the limit of array :"); 
    Scanner s = new Scanner(System.in); 
    int limit = s.nextInt(); 
    int[] array1 = new int[limit];//{12,23, -22, 0, 43,545, -4, -55,43, 12,0, -999, -87 

    System.out.println("Enter the numbers"); 
    for (int i = 0; i < limit; i++) { 
     array1[i] = s.nextInt(); 
    } 
    List<Integer> arrayPlus = new ArrayList<>(); 
    List<Integer> arrayMinus = new ArrayList<>(); 


    for (int i = 0; i < limit; i++) { 
     if (array1[i] >= 0) { 
     arrayPlus.add(array1[i]); 
     } else { 
     arrayMinus.add(array1[i]); 
     } 
    } 
    System.out.println("Positive array numbers"); 
    for (int i = 0; i < arrayPlus.size(); i++) { 
     System.out.println(arrayPlus.get(i)); 
    } 
    System.out.println(""); 

    System.out.println("Negative array numbers"); 
    for (int i = 0; i < arrayMinus.size(); i++) { 
     System.out.println(arrayMinus.get(i)); 
    } 
    } 
} 

ОБЩИЙ (без списков)

import java.util.Scanner; 

class DynamicArray { 
    public static void main(String[] args) { 
    int p=0,n=0; 
    System.out.println("Enter the limit of array :"); 
    Scanner s = new Scanner(System.in); 
    int limit = s.nextInt(); 
    int[] array1 = new int[limit];//{12,23, -22, 0, 43,545, -4, -55,43, 12,0, -999, -87 

    System.out.println("Enter the numbers"); 
    for (int i = 0; i < limit; i++) { 
     int lInput = s.nextInt(); 
     if (lInput >= 0) { 
     p++; 
     } else { 
     n++; 
     } 
     array1[i] = lInput; 
    } 
    int[] arrayPlus = new int[p]; 
    int[] arrayMinus = new int[n]; 

    int indexPlus = 0; 
    int indexMinus = 0; 
    for (int i = 0; i < limit; i++) { 
     if (array1[i] >= 0) { 
     arrayPlus[indexPlus] = array1[i]; 
     indexPlus++; 
     } else { 
     arrayMinus[indexMinus] = array1[i]; 
     indexMinus++; 
     } 
    } 
    System.out.println("Positive array numbers"); 
    for (int i = 0; i < arrayPlus.length; i++) { 
     System.out.println(arrayPlus[i]); 
    } 
    System.out.println(""); 

    System.out.println("Negative array numbers"); 
    for (int i = 0; i < arrayMinus.length; i++) { 
     System.out.println(arrayMinus[i]); 
    } 
    } 
} 
+0

Stefan thanks для вашей помощи. Они сказали мне, что мне не нравится делать списки в этом проекте. Im confused –

+0

Любой другой способ сделать это без списков? –

+0

Это выглядит хорошо, ожидая, пока профессор ответит. Спасибо за ваше время Стефан. –

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