Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка в коде задачи на джаве

Максим Соколов Гуру (4351), открыт 2 недели назад
Добрый день.Дана задача:Дан массив ненулевых целых чисел. Определить, сколько раз элементы массива при просмотре от его начала меняют знак. Например, в массиве 10, –4, 12, 56, –4, –89 знак меняется 3 раза. при выводе кода выходят ошибки, подскажите, что не так?
public class Main {
public static void main(String[] args) {
System.out.print("введите количество элементов в массиве: ");
int n = new Scanner( System.in ).nextInt();
int[] arr = new int[n];
Random rnd = new Random();
for (int i = 0; i< arr.length;
i++){
int factor = rnd.nextInt(origin 2) > 0 ? 1 : -1;
arr[i] = factor*nextInt(1, bound 10);}
System.out.println(Arrays.toString(arr));
var counter =0;
for (int i = 1; i < arr.length; i++) {
if (arr[i - 1] * arr[i] <0)
counter++;
System.out.println(counter++);
}
}
}
3 ответа
Sahaprof Гуру (4694) 2 недели назад
  
import java.util.*;

public class Main {
public static void main(String[] args) {
// Ввод количества элементов в массив
System.out.print("Введите количество элементов в массиве: ");
int n = new Scanner(System.in).nextInt();

// Создание массива и заполнение его случайными числами
int[] arr = new int[n];
Random rnd = new Random();
for (int i = 0; i < arr.length; i++) {
int factor = rnd.nextInt(2) > 0 ? 1 : -1;
arr[i] = factor * rnd.nextInt(0, 10);
}

// Вывод массива
System.out.println(Arrays.toString(arr));

// Подсчет количества изменений знака
int counter = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i - 1] * arr[i] < 0) {
counter++;
}
}

// Вывод количества изменений знака
System.out.println("Количество изменений знака: " + counter);
}
}
Есть несколько ошибок в предоставленном коде Java:

1. Использование origin и bound без определения:
Переменные origin и bound используются в вызове nextInt(), но они не были определены. Вам нужно заменить их подходящими значениями, например, nextInt(0, 10) для генерации случайных чисел в диапазоне от 0 до 9.

2. Неправильный инкремент counter:
В строке System.out.println(counter++) инкремент выполняется после вывода значения counter. Вам нужно переместить инкремент перед выводом, чтобы правильно увеличить счетчик: System.out.println(++counter).
Александр Искусственный Интеллект (290887) 2 недели назад
чё за origin? чё за bound? чё за ошибки?
если массив "дан", то незачем забор городить с каким-то там вводом...
Николай Веселуха Высший разум (360853) 2 недели назад
 import java.util.Scanner; 
import java.util.Random;
import java.util.Arrays;

public class Main {
public static void main(String[] args) {
System.out.print("Введите количество элементов в массиве: ");
int n = new Scanner(System.in).nextInt();
int[] arr = new int[n];
Random rand = new Random();
for (int i = 0; i< arr.length; ++i) {
int factor = rand.nextInt(2) > 0 ? 1 : -1;
arr[i] = factor * rand.nextInt(9) + 1;
}
System.out.println(Arrays.toString(arr));
var counter = 0;
for (int i = 1; i < arr.length; ++i) {
if (arr[i - 1] * arr[i] < 0) {
++counter;
}
}
System.out.println(counter);
}
}
P.S. Раз уж нужны ненулевые, то так!!
Похожие вопросы