У меня так получилось, по простому. На большее пока не выучился :)
public static int[] getIndexZeroArray(int[] array)
{
int count = 0;
for (int i = 0; i < array.length; i++)
{
if (array[i] == 0) count++;
}
int[] newArray = new int[count];
count = 0;
for (int i = 0; i < array.length; i++)
{
if (array[i] == 0) newArray[count++] = i;
}
return newArray;
}
Слушай круто, мне очень нравиться! Красиво массив растет! :) Можно сделать пару улучшений, смотри, tmp.clone(); возвращает массив, так что zerroarr = new int[count]; можно убрать, тогда и int count = 1; удаляем, потом заменяем temp[count-1] = i; на temp[temp.length — 1] = i; и все. В правилах я добавил небольшую памятку — рекомендации по оформлению кода, методы и переменные принято оформлять в стиле camelCase, каждое следующее слово с большой буквы.
temp = Arrays.copyOf(zerroArr, zerroArr.length + 1) это реально круто! Не знал что забивает нулями то что выходит за длину массива. Беру себе на вооружение! :)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Solution {
public static void main(String args[]) throws IOException {
System.out.println("Введите количество элементов массива: ");
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
int kolEl=Integer.parseInt(reader.readLine());
if (kolEl>0)
{
int arr[]=new int[kolEl];
System.out.println("Введите элементы массива: ");
for (int i=0;i<kolEl;i++)
{
arr[i]=Integer.parseInt(reader.readLine());
}
int arrNol[]=createArray(arr, kolEl);
}
else
{
System.out.println("Количество элементов меньше или равно 0");
}
}
public static int[] createArray(int arr[], int kolEl)
{
int kol=0;
for (int i=0;i<arr.length;i++)
{
if (arr[i]==0)
kol++;
}
if (kol>0)
{
int arrNol[]=new int [kol];
int index=0;
for (int i=0;i<arr.length;i++)
{
if(arr[i]==0)
{
arrNol[index]=i;
index++;
}
}
System.out.print("Массив номеров нулевых элементов: ");
for (int i=0;i<arrNol.length;i++)
{
if (i==arrNol.length-1)
System.out.print(arrNol[i]);
else
System.out.print(arrNol[i]+" ");
}
return arrNol;
}
else
{
System.out.println("В массиве нет элементов равных 0");
return null;
}
}
}
Как мне кажется, можно урезать решение, и возвращать массив нулевой длинны не будет ошибкой. По логике мне все нравиться, сам решал как ты. Правда метод принимал только массив. Main можно урезать до:
int[] arr = {0, 5, 6, 7, 77, 54, 0, -25, 45, 88, 91, -100, 50, 0, 0};
zerosIndexesArr(arr); //чуток логики в имя метода
System.out.println(Arrays.toString(arr));
Arrays.toString(arr); — отличный метод который часто выручает!
public class Solution {
public static void main(String args[]) throws IOException {
System.out.println("Введите количество элементов массива: ");
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
int kolEl=Integer.parseInt(reader.readLine());
int arr[]=new int[kolEl];
if (kolEl>0)
{
System.out.println("Введите элементы массива: ");
for (int i=0;i<kolEl;i++)
{
arr[i]=Integer.parseInt(reader.readLine());
}
int arrNol[]=createArray(arr, kolEl);
}
else
{
System.out.println("Количество элементов меньше 0");
}
}
public static int[] createArray(int arr[], int kolEl)
{
int kol=0;
for (int i=0;i<arr.length;i++)
{
if (arr[i]==0)
kol++;
}
if (kol>0)
{
int arrNol[]=new int [kol];
int index=0;
for (int i=0;i<arr.length;i++)
{
if(arr[i]==0)
{
arrNol[index]=i;
index++;
}
}
System.out.print("Массив номеров нулевых элементов: ");
for (int i=0;i<arrNol.length;i++)
{
if (i==arrNol.length-1)
System.out.print(arrNol[i]);
else
System.out.print(arrNol[i]+" ");
}
return arrNol;
}
else
{
System.out.println("В массиве нет элементов равных 0");
return null;
}
}
}
Писал на «скорую руку», вроде бы все учел. Можно еще
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Так на много красивее =)
temp = Arrays.copyOf(zerroArr, zerroArr.length + 1) это реально круто! Не знал что забивает нулями то что выходит за длину массива. Беру себе на вооружение! :)
Чуток пе
Arrays.toString(arr); — отличный метод который часто выручает!
Писал на «скорую руку», вроде бы все учел. Можно еще