2015-10-29 4 views
-1

У меня есть Java-программа, предназначенная для ввода данных клиентов, а затем для каждого цикла. Затем у пользователя есть 3 варианта ввода: клоуны, сафари sam или музыкальный караван. Я просто не понимаю, что не так с моими заявлениями if. Вы видите, что если пользователь вводит «клоунов», соответствующий оператор if работает нормально и выполняется оператор if. Однако, если пользователь вводит «сафари sam» или «музыкальный караван», операторы if10 не выполняются.Нечетная ошибка в моей программе 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; 
     } 
    } 
+0

Попробуйте распечатать значение service_type_real сразу после его назначения; тогда вы должны увидеть проблему. – Thevenin

ответ

4

Вы должны использовать nextLine() вместо next() читать ввод данных пользователем. nextLine() будет читать всю строку, но next() будет читать только следующее слово.

1

Для чтения строки, предоставленной пользователем в консоли, вы должны использовать .nextLine() Так что попробуйте с помощью этого -

String service_type = new_scan.nextLine(); 

Это должно хранить значение того, что вы предоставляете в консоли к Строка "service_type".

Смежные вопросы