BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(reader.readLine());
int b = Integer.parseInt(reader.readLine());
int c = Integer.parseInt(reader.readLine());
if (a!=0 && b!=0 && c!=0){
int minus;
for (minus = a; minus < 0; minus++){
int otr = minus;
break;
}
for (minus = b; minus < 0; minus++){
int otr = minus;
break;
}
for (minus = c; minus < 0; minus++){
int otr = minus;
break;
}
}
else {
if (a!=0 && b!=0 && c!=0){
int plus;
for (plus = a; plus > 0; plus++){
int pol = plus;
break;
}
for (plus = a; plus > 0; plus++){
int pol = plus;
break;
}
for (plus = a; plus > 0; plus++){
int pol = plus;
break;
}
}
}
System.out.println("количество отрицательных чисел: "+ otr +" количество положительных чисел: " + pol);
помогите разобраться
Илья
10 уровень
Использовал циклы, но что то пошло не так...
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Иван Зубов
13 августа 2018, 16:33
В данном случае нужен один цикли и вложить в него три условия.
0
Vladimir
11 августа 2018, 22:48
у вас очень странная логика в циклах реализована. да и вообще не очень понятно зачем это здесь.
Смотрите, по существу:
Здесь вводится 3 целых числа. Мы сравниваем каждое из этих чисел с нулем.
Нам нужно сделать 2 внутренние переменные, которые будут счетчиками отрицательных и положительных чисел. Если число меньше нуля, увеличиваем счетчик отрицательных чисел на 1. Если больше - увеличиваем счетчик положительных чисел.
Теперь про циклы. Конструкция вида:
означает, что мы
1. берем i с начальным значением 0
2. Проверяем: меньше ли i 10. Если да, делаем то, что прописано в теле цикла.
3. После завершения действий в теле цикла (в {} скобках), увеличиваем значение i на 1 (i = i + 1) и повторяем сначала.
Теперь что у вас:
1. в переменную minus присваиваем b.
2. Проверяем меньше ли переменная 0 (допустим)
3. создаем переменную otr = minus и выходим из цикла.
Какой в этом смысл? Т.е. почему нельзя сделать в виде:
if (b < 0) otr = minus;
Циклы все же не для этого.
P.S. Все же вам нужно посчитать количество положительных или отрицательных. Т.е. даже if, что я написал выше, не верное решение задачи.
правильнее было бы, если бы вы делали что-то вроде этого:
PS 2. В вашей реализации минусы "будут считаться" только в случае, если среди введенных чисел не будет нулей.
+1
Илья
12 августа 2018, 13:17
спасибо) но то есть они все же будут считаться если я введу три числа не нули? мне не понятно почему она не компилируется.. комплилятор не может же программу на логику проверять. а я у меня вроде без ошибок синтаксических
0
Vladimir
13 августа 2018, 08:21
Если речь исключительно про компиляцию, то в строке:
идет обращение к переменным, которые могут быть не инициализированы во время работы программы.
Переменные видны и живут в рамках блоков объявления переменной. Блок видимости ограничивается фигурными скобками {}. Т.е. код вида
Не будет скомпилирован, потому что переменная variable существует только во время работы цикла for. После завершения for переменная уже не доступна.
Если исправить код так:
Он скомпилируется. Мы выводим переменную variable, которая инициализирована в блоке метода main и доступна все время работы main. +1
Илья
13 августа 2018, 16:09
понял спасибо) оч много тонкостей
0