2014-10-04 3 views
-2

У меня возникли проблемы с использованием моих заявлений if и else if для моего личного проекта.Как правильно использовать инструкции if и else?

Моя программа работает нормально в первых строках при запросе пользователя для ввода, но в коде есть проблема. Мой компилятор просит меня использовать метод переключения.

Я также столкнулся с проблемой, когда компилятор говорит мне, что я не могу преобразовать String в double, что я уже нашел, используя поиск.

Я знаю, что это может быть очень много, но я бы очень признателен вам за вашу помощь.

/** 
* This application executes number of gallons purchased, car wash if the 
* customer desires. 
* There will be four options, Regular, Premium, Super, 
* or None. A car wash is $1.25 if purchased with $10.00 or more. If it is 
* anything equal or below $9.99 then the car wash fee is $3.00. 
* Regular per gallon is $2.89 
* Premium per gallon is $3.09 
* Super per gallon is $3.39 
* 
* 
* @author Christian Guerra 
*/ 
package finalflight; 


//The line below is preparing the system to ask the user for inputs 
import java.util.Scanner; 


public class ExxonCarServices { 

public static void main(String[] args) { 


     String gasType; 
     String carWash; 
     String gasPrice; 
     String numGallons; 
     double gasRegular = 2.89; 
     double gasPremium = 3.09; 
     double gasSuper = 3.39; 
     double gasNone = 0; 

     Scanner keyboard = new Scanner(System.in); 

     System.out.print("Hello which type of gas would you like today? " 
       + "Please make the selection Regular, Premium, Super, or None" + " "); 

     gasType = keyboard.nextLine(); 

     System.out.print("How many gallons would you like?" + " "); 

     numGallons = keyboard.nextLine(); 

     System.out.print("Would you like to add a professional car wash cleaning today?" 
     + " " + "Please select Yes or No" + " "); 

     carWash = keyboard.nextLine(); 



    if (gasType.equals("Regular")) { 

     gasRegular = Regular; 

    } else if (gasType.equals ("Premium")) { 

     gasPremium = Premium; 
    } else if (gasType.equals("Super")) { 

     gasSuper = Super; 

    } else { 

     gasNone = 0; 
} 



    if (numGallons * gasPrice <10) { 

     carWash = 3; 

    } else { 

     carWash = 1.25; 

    } 
    } 
} 
+1

Пожалуйста, пост [ясный и краткий, минимальный пример] (http://stackoverflow.com/help/how-to-ask) из проблема, с которой вы сталкиваетесь. Кроме того, отправьте ** точную ** ошибку, которую вы получаете. Я никогда не слышал о компиляторе, рассказывающем вам, какие конструкции использовать. – Qix

+0

Ваше использование if ... then ... else в порядке. Проблема в том, что у вас есть gasRegular, определяемый как double, но затем вы пытаетесь установить gasRegular = Regular, который, как я предполагаю, является некоторой константой String (вы не включили часть своего кода, где вы определяете «Обычный», Премиум "и" Супер ", если я так не пропустил его. Покажите нам код, где эти значения установлены. – MarsAtomic

ответ

1

Компилятор говорит вам, что этот код является правильным:

if (gasType.equals("Regular")) { 
    gasRegular = Regular; 
} ... 

но начиная с Java 7.0 также можно записать с помощью переключателя оператор:

switch (gasType) { 
case "Regular": 
    gasRegular = Regular; 
    break; 
case "Premium": 
    gasPremium = Premium; 
    break; 
    .... 
} 

Ошибка Вас» Повторное получение «не может преобразовать String в double», вероятно, связано с отсутствием Double.parseDouble(someString) при назначении String переменной типа Double.

0

Сомневаюсь, что компилятор говорит, что вы используете коммутационный футляр, это, вероятно, просто предлагает его (для более чем нескольких предметов коммутационный футляр - почти всегда лучший вариант для удобочитаемости).

Чтобы преобразовать String в Double, просто используйте Double.parseDouble().

В вашем случае, это будет выглядеть примерно так:

double numGallonsDouble = Double.parseInt(numGallons); 
Смежные вопросы