🔥6👨💻3👌1
🔍 Ответ на задачу про вычисление среднего двух чисел в Java:
👉 Рассмотрим код:
static double average(int x, int y) {
return (x + y) / 2;
}
public static void main(String[] args) {
System.out.println(average(0,1));
}
Что напечатает программа? 🤔
Метод average принимает два int, возвращает double.
(x + y) / 2 — деление целых чисел, результат тоже будет целым (int). Только в конце оно автоконвертируется в double.
Для average(0, 1):
(0 + 1) / 2 = 1 / 2 = 0 (целое деление!)
💡 Вернётся 0.0 (так как double)
✏️ Если хотите получить десятичное число, нужно хотя бы одно число привести к double:
return (x + y) / 2.0;
Тогда результат будет 0.5!
❗️ Не забывайте про особенности целочисленного деления в Java!
Если было полезно — ставьте лайк❤️, подписывайтесь и пишите комментарии!
#java #javacode #программирование #интервью #java_interview_tasks
👉 Рассмотрим код:
static double average(int x, int y) {
return (x + y) / 2;
}
public static void main(String[] args) {
System.out.println(average(0,1));
}
Что напечатает программа? 🤔
Метод average принимает два int, возвращает double.
(x + y) / 2 — деление целых чисел, результат тоже будет целым (int). Только в конце оно автоконвертируется в double.
Для average(0, 1):
(0 + 1) / 2 = 1 / 2 = 0 (целое деление!)
💡 Вернётся 0.0 (так как double)
✏️ Если хотите получить десятичное число, нужно хотя бы одно число привести к double:
return (x + y) / 2.0;
Тогда результат будет 0.5!
❗️ Не забывайте про особенности целочисленного деления в Java!
Если было полезно — ставьте лайк❤️, подписывайтесь и пишите комментарии!
#java #javacode #программирование #интервью #java_interview_tasks
Telegram
Java Interview Tasks
Что напечатает код?
❤10🔥8👍3
Что напечатает код?
Anonymous Quiz
42%
3
23%
4
2%
0
17%
будет ексепшн
4%
будет что-то другое
13%
узнать ответ
🔥5😁3🤯3👍1
🔍 Ответ на задачу про преобразование List в Map в Java
Давайте разберём, что произойдёт в этом коде:
🔸 Мы превращаем список строк в Map, где ключ — длина строки, а значение — сама строка.
📌 Важно: toMap по умолчанию выбрасывает исключение, если встречает дубликаты ключей (а у нас ключи — длины строк).
При первом попадании строки длины 3 ("one") всё ок. Но когда попадётся "two" — возникнет конфликт ключей!
❗️ Результат: Код выбросит исключение типа IllegalStateException: Duplicate key
То есть ничего не напечатает, а программа упадёт с ошибкой.
✅ Если хотите избежать ошибки — добавьте в toMap третий аргумент (как решать конфликт):
🔔 Было полезно? Ставь лайк, подписывайся и пиши свои вопросы или комменты!
#java #stream #map #interview #toMap #java_interview_tasks
Давайте разберём, что произойдёт в этом коде:
List<String> list = Arrays.asList("one", "two", "three", "four");
Map<Integer, String> size2Str = list.stream()
.collect(Collectors.toMap(String::length, Function.identity()));
System.out.println(size2Str.size()); 🔸 Мы превращаем список строк в Map, где ключ — длина строки, а значение — сама строка.
📌 Важно: toMap по умолчанию выбрасывает исключение, если встречает дубликаты ключей (а у нас ключи — длины строк).
При первом попадании строки длины 3 ("one") всё ок. Но когда попадётся "two" — возникнет конфликт ключей!
❗️ Результат: Код выбросит исключение типа IllegalStateException: Duplicate key
То есть ничего не напечатает, а программа упадёт с ошибкой.
✅ Если хотите избежать ошибки — добавьте в toMap третий аргумент (как решать конфликт):
.collect(Collectors.toMap(String::length, Function.identity(), (s1, s2) -> s1))
// Этот вариант оставит первое значение.
🔔 Было полезно? Ставь лайк, подписывайся и пиши свои вопросы или комменты!
#java #stream #map #interview #toMap #java_interview_tasks
Telegram
Java Interview Tasks
Что напечатает код?
👍19🔥4❤2
🔥6👍2
🔍 Ответ на задачу про рекурсию, try-catch и counter:
Что там происходит?
Каждый раз в try печатается "do" и выбрасывается исключение. Затем в catch, если counter <= 3 (а это true до значения 3 включительно), снова вызывается doWithCounter, увеличивая counter при этом!
⚠️ Но! Используется counter++, а не ++counter. Это значит, что в рекурсивный вызов идёт старое значение (а counter увеличится уже после передачи в функцию).
То есть вы всегда передаёте "0" в рекурсию, и создаётся бесконечная рекурсия.
❗️Первый вызов поймает исключение, зайдёт в catch и вызовет doWithCounter(0). Этот вызов опять напечатает "do" и опять вызовет doWithCounter(0), и так далее, пока не случится StackOverflowError. "do" будет выводиться до переполнения стека.
📢 Правильный ответ: "do" напечатается бесконечно более 4-х раз.
👉 Было интересно? Ставь лайк, подписывайся и пиши вопросы в комментарии!
#java #recursion #exception #interview #стек #java_interview_tasks
Что там происходит?
Каждый раз в try печатается "do" и выбрасывается исключение. Затем в catch, если counter <= 3 (а это true до значения 3 включительно), снова вызывается doWithCounter, увеличивая counter при этом!
⚠️ Но! Используется counter++, а не ++counter. Это значит, что в рекурсивный вызов идёт старое значение (а counter увеличится уже после передачи в функцию).
То есть вы всегда передаёте "0" в рекурсию, и создаётся бесконечная рекурсия.
❗️Первый вызов поймает исключение, зайдёт в catch и вызовет doWithCounter(0). Этот вызов опять напечатает "do" и опять вызовет doWithCounter(0), и так далее, пока не случится StackOverflowError. "do" будет выводиться до переполнения стека.
📢 Правильный ответ: "do" напечатается бесконечно более 4-х раз.
👉 Было интересно? Ставь лайк, подписывайся и пиши вопросы в комментарии!
#java #recursion #exception #interview #стек #java_interview_tasks
👍7🔥3❤1