Задача 02. Cinema
Здравейте, колеги имам проблем със следната задача :
В една кинозала столовете са наредени в правоъгълна форма в r реда и c колони. Има три вида прожекции с билети на различни цени:
- Premiere – премиерна прожекция, на цена 12.00 лева.
- Normal – стандартна прожекция, на цена 7.50 лева.
- Discount – прожекция за деца, ученици и студенти на намалена цена от 5.00 лева.
Напишете програма, която чете тип прожекция (стринг), брой редове и брой колони в залата (цели числа), въведени от потребителя, и изчислява общите приходи от билети при пълна зала. Резултатът да се отпечата във формат като в примерите по-долу, с 2 знака след десетичната точка.
Това е кода , но не печата нищо :
import java.util.Scanner; public class Cinema { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String projections = scanner.nextLine(); int rows = Integer.parseInt(scanner.nextLine()); int columns = Integer.parseInt(scanner.nextLine()); double income; if ("Premiere".equals(projections)) { income = rows * columns * 12; } else if ("Normal".equals(projections)) { income = rows * columns * 7.50; } else if ("Discount".equals(projections)) { income = rows * columns * 5; System.out.printf("%.2f", income); } } }
След първата къдрава скоба ?
Ами можеш след всяка проверка направо да печаташ резултата, но можеш и да го изведеш след проверките, тогава само трябва при инициализацията да му зададеш стойност за да не ти се кара ide-то
Изведох го след проверките и изчислението е 0.00 не знам защо
А на income му зададох стойност 0.0
така би трябвало да работи без грешка, основният проблем е, че когато подадеш като данни Normal за прожекция, то програмата ти започва да върви ред по ред, първо си получава данните от трите реда, след което инициализира double income, след това започва да върви по if else проверките, спира се на първия if и проверява дали прожекцията е Premiere, тъй като не е продължава нататък, стига до следващия if и проверява дали прожекцията е Normal, понеже е, изпълнява това което е написано в скоупа (къдравите скоби след if else), там ти сетва income да е равно на някаква стойност и след това приключва с всички if else проверки. Тоест така както си сложил принтирането в последния if else ще ти принтира само когато влезнеш там, а това се случва когато за прожекция зададеш discount и в нито един друг от случаите. Първият вариант е да принтираш във всяка една if проверка като по този начин каквото и да ти се подаде като вход ще стигаш до принтиране, а другият е да принтираш накрая като тогава след приключване на проверките ще си принтираш каквото имаш като стойност в income