первую очередь вы можете упростить это:
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]);
}
}
}
Я не уверен, что ваш вопрос. Просьба уточнить. Согласно названию, это может быть дубликат этого вопроса: http://stackoverflow.com/questions/2426671/variable-length-dynamic-arrays-in-java – fabian
Проблема в том, что Im не любил использовать ArrayList –