Всем привет! Я только новичок и пытаюсь разобраться с циклом for в Java.
Есть задача:
A bus tour of Europe has been very successful. Due to an increase in the number of people that want to go on a tour, the tour company decided to increase the height of the bus. The new height of the bus is exactly N centimeters.
But the tour’s route runs under a lot of bridges, and there is a chance that the bus will crash into one of these bridges. Can you find out if this will happen?
The first line of the input contains the height of the bus and number of bridges under which the bus passes. The second line contains heights of these bridges.
You should output "Will not crash" if everything will be all right; otherwise, output "Will crash on bridge i" (where i is a number of a bridge) into which the bus will crash. If the height of a bridge equals the height of the bus, the bus will crash.
Sample Input 1:
234 8
465 453 981 463 1235 871 475 981
Sample Output 1:
Will not crash
Sample Input 2:
211 5
871 205 123 871 1681
Sample Output 2:
Will crash on bridge 2
Мой код:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int heightOfTheBus = scanner.nextInt();
int numberOfTheBridge = scanner.nextInt();
int heightOfTheBridge;
int i;
for (i = 1; i <= numberOfTheBridge; i++) {
heightOfTheBridge = scanner.nextInt();
if (heightOfTheBus < heightOfTheBridge) {
System.out.println("Will not crash");
} else {
System.out.println("Will crash on bridge " + i);
}
}
}
}
Проблема заключается в том, что когда я ввожу значение высоты моста, компилятор сразу выводит сообщение попадёт ли автобус в автокатастрофу.
Как сделать, чтобы сообщение об этом выводилось только тогда, как все значения высот уже введены?
Мой output:
Смотрите, вы написали
for (i = 1; i <= numberOfTheBridge; i++) {
heightOfTheBridge = scanner.nextInt();
if (heightOfTheBus < heightOfTheBridge) {
System.out.println("Will not crash");
} else {
System.out.println("Will crash on bridge " + i);
}
}
А ошибка ваша вот в чем: циклы предназначены для повторяющихся действий, а вы поместили в цикл то действие, которое повторяться не должно. Вам нужно сначала обойти мосты, а потом один раз вывести ответ, а не для каждого моста ответ. Вынесите вывод из цикла наружу.
И еще один момент: судя по вашему неравенству, если высота моста больше высоты автобуса, то он в него врежется, а если меньше, то пролезет. Поменяйте знак.
У вас должно быть что-то типа
boolean crash = false;
for (i = 0; i < numberOfTheBridge; i++) {
heightOfTheBridge = scanner.nextInt();
if (heightOfTheBus > heightOfTheBridge) {
crash = true;
break;
}
}
if (crash) ... else ... // вывод ответа
Цикл вида for (i = 0, i < n
более распространен и привычен глазу программиста, так как он подойдет и для массивов, где индексы начинаются с нуля, и еще много для чего, но это уже совсем другая история.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть метод в кодеОн подключается к базе и заносит туда значения
Есть класс, в котором есть 3 функцииДве из них должны возвратить значение
Я хотела сделать так, чтобы вся информация о спрайте хранилась в объекте и функцию отрисовки можно было бы использовать много раз не только...
Я хочу сделать,чтобы функцию draw можно было бы применять много раз с разными картинками, но у меня почему-то не выходитМожет это особенности...