У меня есть Java-программа, предназначенная для ввода данных клиентов, а затем для каждого цикла. Затем у пользователя есть 3 варианта ввода: клоуны, сафари sam или музыкальный караван. Я просто не понимаю, что не так с моими заявлениями if
. Вы видите, что если пользователь вводит «клоунов», соответствующий оператор if
работает нормально и выполняется оператор if
. Однако, если пользователь вводит «сафари sam» или «музыкальный караван», операторы if
10 не выполняются.Нечетная ошибка в моей программе Java
Мой вопрос: если выполняется первый оператор if
, то почему другие 2 пропускаются (не выполняются при выполнении условий)?
КОД:
import java.util.Scanner;
public class FunRentals {
public static void main(String[] args) {
Scanner new_scan = new Scanner(System.in);
System.out.println("Enter the amount of customers: ");
int num_customers = new_scan.nextInt();
for(int i = 1; i<=num_customers; i++){
System.out.println("Please enter the service used (\"Clowns\", \"Safari Sam\", or \"Music Caravan\") for customer #"+i);
String service_type = new_scan.next();
String service_type_real = service_type.toLowerCase();
if(service_type_real.equals("clowns")){
System.out.println("Please enter the amount of ADDITONAL hours");
double additional_hours = new_scan.nextDouble();
System.out.println("The total bill for customer #" +i +" is "+ clowns(additional_hours));
}
else if(service_type_real.equals("safari sam")){
System.out.println("Please enter the amount of ADDITONAL hours");
double additional_hours = new_scan.nextDouble();
System.out.println("The total bill for customer #" +i +" is "+ safari_sam(additional_hours));
}
else if(service_type_real.equals("music caravan")){
System.out.println("Please enter the amount of ADDITONAL hours");
double additional_hours = new_scan.nextDouble();
System.out.println("The total bill for customer #" +i +" is "+ music_caravan(additional_hours));
}
}
}
public static double clowns(double a){
double additional_cost = a*35;
double total_cost = additional_cost + 45;
return total_cost;
}
public static double safari_sam(double a){
double additional_cost = a*45;
double total_cost = additional_cost + 55;
return total_cost;
}
public static double music_caravan(double a){
double additional_cost = a*30;
double total_cost = additional_cost + 40;
return total_cost;
}
}
Попробуйте распечатать значение service_type_real сразу после его назначения; тогда вы должны увидеть проблему. – Thevenin