Решил задачу но загвостка небольшая , при вводи в масив цифры "0" , компилятор ругаеться и выдаёт ошибку, как исправить?

public static void printOddNumbers(int[] arr) {
        StringBuilder bilder = new StringBuilder();
        for (int i = 0; i < arr.length; i++)
            if (Math.abs(arr[i] % 2) !=0)
                bilder.append(arr[i] + ",");

            bilder.deleteCharAt(bilder.length() - 1);
        System.out.println(bilder);

Присвоить итому элементу “-1”. Или не в этом вопрос?

Так а ошибка какая и где?

И если это происходит после запуска программы, то компилятор не причем, видимо это исключение (exception), а не ошибка компилятора.

если в строке нет ни одного нечетного числа, то строка получается ПУСТОЙ и попытка удалить последний символ (последнюю запятую) приводит к ошибке.

можно так исправить:

public static void printOddNumbers(int[] arr) {
        StringBuilder bilder = new StringBuilder();
        for (int i = 0; i < arr.length; i++)
            if (Math.abs(arr[i] % 2) !=0)
                bilder.append(arr[i] + ",");
        if(bilder.length()>1)
            bilder.deleteCharAt(bilder.length() - 1);
        System.out.println(bilder);

программа выводит массив только с нечётными числами, можно ли реализовать это программу без условий , т.е без if??

“Без условий” и “без if” это разные вещи.
Условие-то в любом случае нужно каким-либо образом реализовать, если в массиве введенных чисел есть и четные, и нечетные, а надо оставить только нечетные.

В чем именно проблема?

в моей задачи , дан массив чисел int[] arr = {3,6,5,2,3,6,8,9,-1,-8};, нужно написать програму выводящую из массива только не чётные числа , - программа написано , но был замечание максимально избавиться от if -оф.

спасибо

Второй if в исправленном варианте выше можно заменить на String.join (вместо StringBuilder записывать в массив).

Ну а если совсем без if:

import java.util.*;
import java.util.stream.*;

public class Main
{
    public static void printOddNumbers(int[] arr) {
        int[] oddNumbers = Arrays.stream(arr).filter(num -> num % 2 != 0).toArray();
        String[] oddNumbersStrings = Arrays.stream(oddNumbers).mapToObj(String::valueOf).toArray(String[]::new);
        System.out.println(String.join(", ", oddNumbersStrings));
    }
    
	public static void main(String[] args) {
	    int[] arr = {3,6,5,2,3,6,8,9,-1,-8};
		printOddNumbers(arr);
	}
}

1 лайк

спасибо)