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);
}
}
спасибо)