Урок 13. Первое знакомство с коллекциями в Java [Курсы Java с нуля]

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ม.ค. 2025

ความคิดเห็น •

  • @artemvorov
    @artemvorov  4 ปีที่แล้ว +8

    ДЗ на повторение:
    /*
    Задача по алгоритмам.
    Есть массив чисел, в котором все числа дублируются, кроме одного. Найдите число, которое не имеет дубликатов в массиве.
    Пример ввода:
    {1, 2, 3, 3, 4, 5,
    7, 5, 6, 2, 4, 7, 6}
    Пример вывода:
    1
    */
    /*
    Создать массив на 5 чисел. Заполнить его числами с клавиатуры. Найти максимальное и минимальное числа в массиве.
    Вывести на экран максимальное и минимальное числа через пробел.
    */

    • @cloudname3666
      @cloudname3666 4 ปีที่แล้ว

      imgur.com/a/EZ3d9oJ
      P.S Как то я намудрил с 1 заданием, если не повторяющееся число = последнее, то выдает ошибку

    • @artemvorov
      @artemvorov  4 ปีที่แล้ว +1

      @@cloudname3666 Ошибку выдает из за того, что у тебя на последнем элементе программа пробует взять array[i + 1], переменная i, в этот момент, у тебя и так смотрит на последний элемент, соответственно - i+1 будет уже смотреть на индекс, которого не существует и у тебя будет выдавать IndexOutOfBoundException - который и говорит, что ты пытаешься обратиться по индексу, которого не существует.
      Для того, что бы избежать этой ошибки тебе надо в условии цикла сделать i < array.length - 1
      тогда array[i + 1] в последней итерации не будет выходить за рамки допустимых индексов.

    • @artemvorov
      @artemvorov  4 ปีที่แล้ว +1

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

    • @TSAR_TOP
      @TSAR_TOP 4 ปีที่แล้ว

      @@cloudname3666 я сначала примерно как ты сделал, но это не работало, в случае если была одна 1 - вывод был 0. Не совсем разобрался, почему так, поэтому нагуглил очень простое и понятное решение через XOR в одну строчку)
      В этом решении XOR сравнивает переменную 'arr' (которая изначально 0) с элементом массива в каждой итерации, и если они различаются, то записывает этот элемент в 'arr'.
      imgur.com/a/moMQw0f
      и второе, если кто-то хочет порассматривать чужой код: imgur.com/a/zYDn9Lg

    • @СергейПовод-ь8р
      @СергейПовод-ь8р 3 ปีที่แล้ว

      Без сортировки первое задание paste.ubuntu.com/p/DdVqzNb7Wq/

  • @aramzoryan
    @aramzoryan 4 ปีที่แล้ว

    Но работает только если не больше одного дубликата на число.

  • @aramzoryan
    @aramzoryan 4 ปีที่แล้ว

    Не тот код

    • @TSAR_TOP
      @TSAR_TOP 4 ปีที่แล้ว

      а где тот?)

  • @aramzoryan
    @aramzoryan 4 ปีที่แล้ว

    1-е задание. Нельзя ли упростить мой код:
    package com.company.DZ.dz6;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    public class Main {
    public static void main(String[] args) throws IOException {
    int[] mas = new int[9];
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    for (int i = 0; i < mas.length; i++) {
    String s = reader.readLine();
    mas[i] = Integer.parseInt(s);
    }
    Arrays.sort(mas);
    for (int i = 0; i < mas.length; i++) {
    for (int j = i+1; j < mas.length; j++) {
    if (mas[i] == mas[j]) { i++;break; }
    System.out.println(mas[i]);break;
    }
    }
    if (mas[7]!=mas[8]){
    System.out.println(mas[8]);
    }
    }
    }

    • @artemvorov
      @artemvorov  4 ปีที่แล้ว +1

      Конечно можно, вложенный цикл тебе здесь не нужен, попробуй избавиться от него.
      Это вообще надо убрать:
      if (mas[7]!=mas[8]){
      System.out.println(mas[8]);
      }
      Почему ты уверен, что у тебя будет 7 и 8 индекс в массиве? Если я создам массив на 3 элемента, например, у тебя вылетит ошибка.
      Программа должна работать универсально для массива любого размера, будь там 10 элементов, один или вообще ноль.

  • @aramzoryan
    @aramzoryan 4 ปีที่แล้ว

    package com.company.DZ.dz6;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    public class Main {
    public static void main(String[] args) throws IOException {
    int[] mas = new int[9];
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    for (int i = 0; i < mas.length; i++) {
    String s = reader.readLine();
    mas[i] = Integer.parseInt(s);
    }
    Arrays.sort(mas);
    for (int i = 0; i < mas.length; i++) {
    if (mas[i] != mas[i+1]) { i++;
    continue;
    }System.out.println(mas[i]);
    }
    }
    }
    Если так , то ошибка. Если добавляю -1 к mas.length - не доходит до sout.

  • @aramzoryan
    @aramzoryan 4 ปีที่แล้ว

    Вместо != ==