-1

Не сравнивает переменную food

import java.util.Scanner;

public class LPZ9 {

public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    int lvl, beds;
    System.out.println("Сколько звёзд? (3-5)");
    lvl = scan.nextInt();
    System.out.println("Сколько мест? (1-2)");
    beds = scan.nextInt();
    System.out.println("С питанием? (Да/Нет)");
    scan.nextLine();
    String food = scan.nextLine();
    switch (lvl){
        case 5:
            switch (beds) {
                case 1:
                    switch (food) {
                        case "Да":
                            System.out.println("Гостиница 'Курортная' - 1500гр");
                            break;
                        case "Нет":
                            System.out.println("Гостиница 'Курортная' - 1000гр");
                            break;
                        default:
                            System.out.println("Ошибка ввода");
                    }
                    break;
                case 2:
                    switch (food) {
                        case "Да":
                            System.out.println("Гостиница Курортная - 2500гр");
                            break;
                        case "Нет":
                            System.out.println("Гостиница Курортная - 1500гр");
                            break;
                        default:
                            System.out.println("Ошибка ввода");
                    }
                    break;
                default:
                    System.out.println("Ошибка ввода");
            }
            break;
        case 4:
            switch (beds) {
                case 1:
                    switch (food) {
                        case "Да":
                            System.out.println("Гостиница Верховина - 900гр");
                            break;
                        case "Нет":
                            System.out.println("Гостиница Верховина - 600гр");
                            break;
                        default:
                            System.out.println("Ошибка ввода");
                    }
                    break;
                case 2:
                    switch (food) {
                        case "Да":
                            System.out.println("Гостиница Верховина - 1500гр");
                            break;
                        case "Нет":
                            System.out.println("Гостиница Верховина - 900гр");
                            break;
                        default:
                            System.out.println("Ошибка ввода");
                    }
                    break;
                default:
                    System.out.println("Ошибка ввода");
            }
            break;
        case 3:
            switch (beds) {
                case 1:
                    switch (food) {
                        case "Да":
                            System.out.println("Гостиница Гуцулка - 500гр");
                            break;
                        case "Нет":
                            System.out.println("Гостиница Гуцулка - 300гр");
                            break;
                        default:
                            System.out.println("Ошибка ввода");
                    }
                    break;
                case 2:
                    switch (food) {
                        case "Да":
                            System.out.println("Гостиница Гуцулка - 800гр");
                            break;
                        case "Нет":
                            System.out.println("Гостиница Гуцулка - 450гр");
                            break;
                        default:
                            System.out.println("Ошибка ввода");
                    }
                    break;
                default:
                    System.out.println("Ошибка ввода");
            }
            break;
        default:
            System.out.println("Ошибка ввода");
    }
}

}

вывод выглядит вот так вывод

1 Answers1

1

Не следует смешивать ввод с консоли с использованием next/nextInt/nextFloat и nextLine, так как nextLine всегда считывает из потока ввода перевод строки, а next/nextInt/nextFloat считывают до первого разделителя, которым по умолчанию являются пробельные символы, включая и перевод строки.

Ввод из консоли следует считывать двумя способами:

  1. Использовать только next/nextInt/nextFloat
  2. Использовать только nextLine, чтобы считывать строки, тогда следует дополнительно парсить прочитанные данные Integer.parseInt(scan.nextLine()) и т.п.

Представленный код можно исправить:

Scanner scan = new Scanner(System.in);
int lvl, beds;
System.out.println("Сколько звёзд? (3-5)");
lvl = scan.nextInt();
System.out.println("Сколько мест? (1-2)");
beds = scan.nextInt();
System.out.println("С питанием? (Да/Нет)");
String food = scan.next();
System.out.printf("lvl=%d  beds=%d  food='%s'%n", lvl, beds, food); // для отладки

Nowhere Man
  • 15,995
  • 33
  • 19
  • 29