ресторанный счет, ошибка инициализации

1
import java.util.Scanner;
import javax.swing.JOptionPane;

public class RestaurantBill3
{
   public static void main(String [] args)
   {
      //Constant
      final double TAX_RATE = 0.0675;      
      final double TIP_PERCENT = 0.15;

      //Variables                             
      double cost;  
      double taxAmount = TAX_RATE * cost;              //Tax amount 
      double totalWTax = taxAmount + cost;             //Total with tax
      double tipAmount = TIP_PERCENT * totalWTax;            //Tip amount
      double totalCost = taxAmount + tipAmount + totalWTax;  //Total cost of meal

      Scanner keyboard = new Scanner(System.in);

      System.out.print("What is the cost of your meal? ");
      cost = keyboard.nextDouble();

      System.out.println("Your meal cost $" +cost);

      System.out.println("Your Tax is $" + taxAmount);

      System.out.println("Your Tip is $" + tipAmount);

      System.out.println("The total cost of your meal is $" + totalCost);

      System.exit(0);                                        //End program
   }
}  

/* Я продолжаю получать ошибку, которая, по-видимому, не была инициализирована, но если она ждет ввода, как она должна это делать? */

  • 1
    Вы используете cost в расчетах, прежде чем присваивать ей какие-либо значения. Сначала присвойте ему значение.
Теги:
java.util.scanner

2 ответа

0
Лучший ответ

Посмотрите, как вы объявляете переменную cost. Вы объявляете переменную, но вы не присваиваете ей значение, поэтому оно не инициализируется. Я думаю, что есть большая концептуальная проблема. Посмотрите на свой код:

double cost;  // this is uninitialized because it has not been assigned a value yet
double taxAmount = TAX_RATE * cost;              //Tax amount 
double totalWTax = taxAmount + cost;             //Total with tax
double tipAmount = TIP_PERCENT * totalWTax;            //Tip amount
double totalCost = taxAmount + tipAmount + totalWTax;  //Total cost of meal

Здесь происходит то, что вы объявляете переменные и устанавливаете их значение как результат выражения - правую сторону знака равенства. В этом случае поток программы сверху вниз, и эти операторы выполняются последовательно. Когда taxAmount и taxAmount и ваши другие переменные, стоимость стоимости неизвестна. Это приводит к ошибке компилятора. Попробуйте переписывать код, как это, имея в виду, что cost потребности быть присвоено значение, прежде чем использовать его.

public static void main(String [] args) {
    //Constant
    final double TAX_RATE = 0.0675;      
    final double TIP_PERCENT = 0.15;

    //Variables                             
    double cost, taxAmount;  // rest of variables

    Scanner keyboard = new Scanner(System.in);

    System.out.print("What is the cost of your meal? ");
    cost = keyboard.nextDouble();

    System.out.println("Your meal cost $" +cost);

    taxAmount = TAX_RATE * cost;
    System.out.println("Your Tax is $" + taxAmount);

    // rest of code

    System.exit(0);
}
  • 0
    большое Вам спасибо. не привыкли быть «внутри» программы ... имеет смысл, что все работает в том порядке, в котором они написаны. LOL
1

Вы имеете в виду стоимость cost до ее инициализации здесь:

double taxAmount = TAX_RATE * cost; 
double totalWTax = taxAmount + cost;       

Переместите инициализацию этих переменных после инициализации cost, поэтому cost будет иметь значение, когда она ссылается.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню