package com.javarush.task.jdk13.task07.task0706;
import java.io.IOException;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
int[] i = new int[15];
int a = 0;
i[a] = scanner.nextInt();
int x = i[0] + i[2] + i[4] + i[6] + i[8] + i[10] + i[12] + i[14];
int y = i[1] + i[3] + i[5] + i[7] + i[9] + i[11] + i[13];
for (a = 0; a <= i.length; a++);
if (x < y) {
System.out.println("В домах с четными номерами проживает больше жителей.");
} else if (x > y) {
System.out.println("В домах с нечетными номерами проживает больше жителей.");
}
}
}
Вся беда в том что это уже второй заход. Сперва все было в цикле for и сканер и х и у, я их вынес за for в мэин однако проблема не изменилась. я забиваю первый ввод с клавиатуры сразу срабатывает sout. может кто показать че как? Спасибо.ShpilKA
6 уровень
If выполняется еще до завершения работы сканера
Решен
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
KIRAExpert
27 июля 2021, 03:57
В 11 строке сканер вижу, а где он используется дальше?
В 15 цикл который ничего не делает
0
ShpilKA
27 июля 2021, 09:21
import java.io.IOException;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
int[] i = new int[15];
for (int a = 0; a <= i.length; a++) {
i[a] = scanner.nextInt();
int x = i[0] + i[2] + i[4] + i[6] + i[8] + i[10] + i[12] + i[14];
;
int y = i[1] + i[3] + i[5] + i[7] + i[9] + i[11] + i[13];
if (x < y) {
System.out.println("В домах с четными номерами проживает больше жителей.");
} else if (x > y) {
System.out.println("В домах с нечетными номерами проживает больше жителей.");
}
}
}
}
А сейчас? он что то делает. Но после каждого ввода выводит sout и цикл продолжается дальше. а мне нужно один раз и после ввода данных.
0
KIRAExpert
27 июля 2021, 09:26
Ну вы же не наугад пишите программу. Что вы написали, чтобы она делала.
int[] i = new int[15]; создали массив на 15 чисел
for (int a = 0; a <= i.length; a++) - тут уже будет ошибка потому что в массиве максимальный индекс 14 (от 0 - 14) i.length - 15, когда а будет 15, 15 <= 15 - true
i[15] = scanner.nextInt(); - нет 15 индекса
0
KIRAExpert
27 июля 2021, 09:33
Будем считать ошибку с выходом за пределы массива исправленной.
Цикл это повторение действие, в данном случае 15 раз
Если вам не нужно повторять эти действия, тогда зачем помещать их в цикл?
Вам нужно считать 15 цифр, вы поместили считывание в цикл и программа будет спрашивать 15 цифр, поместили вывод в цикл, программа выведет 15 раз результат 0
ShpilKA
27 июля 2021, 09:40
for (int a = 0; a < 15; a++)
int x = i[0] + i[2] + i[4] + i[6] + i[8] + i[10] + i[12] + i[14]; //вынес за цикл (после for) цикл
int y = i[1] + i[3] + i[5] + i[7] + i[9] + i[11] + i[13]; //вынес за цикл (после for) цикл
и все гуд. По поводу наугад, просто не хочу как все рисуя одно и то же. хочу понять принцип работы не заучивая шаблоны других. у меня все влезло в 24 строки кода). За помощь спс)
0
ShpilKA
27 июля 2021, 09:43
все четко
0
KIRAExpert
27 июля 2021, 09:51
Все программисты должны придерживаться единого стиля иначе будет сложнее понять, что вы написали или где ошибка, что и для чего вы используете.
Соглашения по оформлению кода Java. Сейчас некоторые вещи вам могут быть тут не понятны, но это нужно знать и использовать
0
ShpilKA
27 июля 2021, 10:39
Понял. Спасибо, учту.
0