package com.javarush.task.jdk13.task04.task0428;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/*
Положительные числа
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int number1 = Integer.parseInt(reader.readLine());
int number2 = Integer.parseInt(reader.readLine());
int number3 = Integer.parseInt(reader.readLine());
int counter = 0;
if (number1 > 0) {
counter++;
}
if (number2 > 0) {
counter++;
}
if (number3 > 0) {
counter++;
}
System.out.println(counter);
}
}
Условие Условие + задача
Введи с клавиатуры три целых числа. Выведи на экран количество положительных чисел среди этих трех.
Примеры:
а) при вводе чисел:
-4
6
6
получим вывод:
2
б) при вводе чисел:
-6
-6
-3
получим вывод:
0
в) при вводе чисел:
0
1
2
получим вывод:
2
Требования:
• Программа должна считывать числа c клавиатуры.
• Программа должна выводить число на экран.
• Программа должна выводить количество положительных чисел в исходном наборе.
• Если положительных чисел нет, программа должна вывести "0".
• Учти, что "0" не относится ни к положительным, ни к отрицательным числам.
Решение взято официальное, тк я очень долго ломал голову и пытался задачу реализовать через кучу различных сравнений - мне показалось это глупым и, что явно есть решение проще.
Ход моих мыслей:
Ввелась четвертая переменная counter = 0.Каждое число по порядку проверяется на number > 0, а снизу стоит заботливый counter++ с инкрементом и что-то хочет увеличить на 1. Вспоминая предыдущие лекции понимаю, что в компиляторе у нас код считается по порядку, раз counter++ стоит в теле условия if, то по логике к числу из условия number > 0 прибавляется 1 и делается возврат в изначально заданный int counter = 0, где 0 будет заменен на любое другое положительное число.
Вопросы:
1) "Введи с клавиатуры три целых числа. Выведи на экран количество положительных чисел среди этих трех."
Предположим, что у меня все 3 числа положительные, как я их верну все 3 в одну переменную, если counter++ делает возврат на себя
2) Инкремент увеличивает число на 1, что если я хотел ввести конкретно 0, чтобы это число было скрыто и тут инкремент берет и увеличивает введенное число на 1?
3)Человек, который читает это месиво, скажи мне, действительно ли можно считать оф решение рациональным и есть ли другие подходы к этой задачи?CurseUlcer
3 уровень
Небольшие вопросы
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
KIRAРазработчик в prosv.ruExpert
27 июня 2023, 12:13полезный
Ничего не понял, но очень интересно.
1. counter++; это выражение увеличивает значение переменной на 1, не делает его 1, а увеличивает
Если написать:
Второй вопрос не понятен совсем
Рационально было бы написать один метод и возвращать результат.
+1
hidden #3303140
28 июня 2023, 08:39
Судя по вопросу, отдельные методы и варарги тут приплетать точно не нужно :)
Нужен цикл ровно на три шага, в котором будет считывание числа с клавиатуры и проверка на > 0 с последующим инкрементом счётчика.
0
CurseUlcer
29 июня 2023, 05:12
А зачем нам увеличивать вводимые данные на 1? Я просто не понимаю зачем в этой задаче вообще инкремент.
Допустим, мы ставим условие, что число больше нуля
То есть оно по-любому положительное и его можно уже выводить на экран
Зачем здесь тогда
Я понимаю "counter++; это выражение увеличивает значение переменной на 1, не делает его 1, а увеличивает", но не понимаю почему надо пользоваться им здесь.
0
hidden #3303140
29 июня 2023, 05:33решение
Никто не увеличивает вводимые значения, увеличивают другую переменную, которая хранит количество положительных чисел. Тебе в задаче что требуется сделать? Посчитать. Вот эта переменная и считает количество. Нашли одно положительное число - увеличили счётчик один раз, нашли второе - увеличили ещё раз. Если третье число положительное - увеличили счётчик третий раз. Потом содержимое счетчика вывели на экран.
+2
CurseUlcer
29 июня 2023, 05:49
Все, я понял. Посчитать = Программа должна выводить количество положительных чисел в исходном наборе. Теперь я понял, что здесь делает counter++. Спасибо.
0