2012-01-14 3 views
-1

Мне нужна помощь в этом, я изучаю Jave, создав простой калькулятор продаж. У меня есть раздел в пределах этого кода следующим образом:Java: Сохранение выбранного значения для последующего использования

System.out.println ("Please make a selection:"); 
System.out.println ("1. Octopus Tentacles, 2. Rat Droppings"); 
System.out.println ("3. Sharks teeth, 4. Mountain Oysters"); 
System.out.println (" "); 
// Since we don't have a primary database to pull from we use a dummy DB 
while (foodCount <= 1) 
{ 
System.out.print("Enter selection (1 , 2, 3, 4): "); 
result = input.nextInt(); 

if (result == 1) 
    System.out.println("You selected Octopus tentacles, price $4.99"); 
else if (result == 2) 
    System.out.println("You selected Rat droppings, price $3.49"); 
else if (result == 3) 
    System.out.println("You selected Sharks teeth, price $6.73"); 
else if (result == 4) 
    System.out.println("You selected Mountain Oysters, price $9.95"); 
break; 
} 

System.out.println (" "); 

позволяет выбор мне сделало, что я хочу сделать, это иметь, что значение, сохраненное для использования в разделе Alittle ввода Цены ниже этого. Может кто-то мне помочь, пожалуйста? Я новичок в Java и изучаю свой путь через собственные прогулки по книгам, которые ищут в Интернете, но не нашел ничего, что поможет мне в этом случае. Любая помощь с этим будет оценена по достоинству.


import java.io.*; 
import java.text.*; 
import java.util.*; 
import java.util.Scanner; 
import java.math.BigDecimal; 
import java.text.NumberFormat; 

class priceCalc { 

public static void main (String[] args) throws IOException { 
    BufferedReader in = new BufferedReader (new InputStreamReader (System.in)); 
    Scanner input = new Scanner(System.in); 
    int Quantity; 
    int result = 0; 
    int foodCount = 1; 
    double Price, Subtotal, SalesTax, TotalSale; 
    NumberFormat curForm = NumberFormat.getCurrencyInstance(); 
// Here is a simple display of available products 
    System.out.println (" "); 
    System.out.println ("Welcome to the IP2 part 2!"); 
    System.out.println (" "); 

    System.out.println ("Please make a selection:"); 
    System.out.println ("1. Octopus Tentacles, 2. Rat Droppings"); 
    System.out.println ("3. Sharks teeth, 4. Mountain Oysters"); 
    System.out.println (" "); 
// Since we don't have a primary database to pull from we use a dummy DB 
    while (foodCount <= 1) 
    { 
    System.out.print("Enter selection (1 , 2, 3, 4): "); 
    result = input.nextInt(); 

    if (result == 1) 
    System.out.println("You selected Octopus tentacles, price $4.99"); 
    else if (result == 2) 
    System.out.println("You selected Rat droppings, price $3.49"); 
    else if (result == 3) 
    System.out.println("You selected Sharks teeth, price $6.73"); 
    else if (result == 4) 
    System.out.println("You selected Mountain Oysters, price $9.95"); 
    break; 
    } 

    System.out.println (" "); 
    // Create Scanner for input 
    Scanner key = new Scanner(System.in); 

    //Quantity 
    System.out.print ("Please enter quantity: "); 
    Quantity = key.nextInt(); 
    System.out.println (" "); 

    //Price  
    System.out.print ("Please input price (price amount w/no $): "); 
    Price = key.nextDouble(); 
    System.out.println (" "); 

    //Subtotal 
    Subtotal = Price * Quantity; 
    System.out.println ("Your subtotal is: " +curForm.format(Subtotal)); 

    //Sales Tax 
    SalesTax = Subtotal * .065; 
    System.out.println ("Your sales tax is: " +curForm.format(SalesTax)); 

    //Total Sale 
    TotalSale = Subtotal+SalesTax; 
    System.out.println ("Your total sale price is: " +curForm.format(TotalSale)); 
    System.out.println (" "); 
} 
} 
+0

Я до сих пор не понимаю, где проблема –

+0

Theres не проблема с кодом, как он работает, он прекрасно работает. Проблема в том, что я хочу, чтобы цена была автоматизированной, поэтому, когда я делаю выбор выше 1, 2, 3, 4, цена будет сохранена и вызывается как вход для цены ниже после того, как добавится количество добавленных количества. – Powercat

ответ

0

Обычно, я бы ожидать начинающую ошибка несобственной области видимости result - где бы вы хранить что-то в него, но не быть в состоянии получить к нему доступ из родительской области. Тем не менее, result находится здесь соответствующим образом.

Ваш пример выглядит неполным, поскольку вы пытаетесь выполнить цикл (на foodCount <= 1) - но вы всегда ломаетесь, поэтому вы никогда не зацикливаетесь. Таким образом, у вас должен быть только один выбор - и значение result доступно в вашем более позднем коде для использования в ваших расчетах - рядом с Price, Subtotal, SalesTax и TotalSale. (Следуя соглашениям Java, эти имена переменных должны начинаться с буквы нижнего регистра.) Однако я смущен, почему вы запрашиваете цену входа, после того как пользователь уже выбрал элемент с соответствующей ценой - если это не то, что вы «пытаюсь исправить.

+1 для предложения Джона/ответа. После этого вы можете удалить свое приглашение по цене. Тем не менее, вам нужно сначала объявить price выше вместе с вашими другими переменными, чтобы это работало.

+0

Да, я пытаюсь исправить это. снова я новичок в Java, и я учусь, так как я буду работать с SQL, я хочу постепенно получать больше навыков с помощью java, чтобы в конечном итоге узнать, как подключить их. – Powercat

1

Я внес соответствующие изменения, а также предоставил причины для них.


class priceCalc { 
    public static void main (String[] args) throws IOException { 
     /* 
     You don't need a BufferedReader and also a Scanner, any one will do. 
     BufferedReader in = new BufferedReader (new InputStreamReader (System.in)); 
     */ 

     Scanner input = new Scanner(System.in); 

     /* 
     Changed variable names to camelCase 
     http://en.wikipedia.org/wiki/Naming_convention_%28programming%29#Java 
     */ 
     int quantity; 
     int result = 0; 
     double price[] = new double[4]; 
     double subTotal, salesTax, totalSale; 
     NumberFormat curForm = NumberFormat.getCurrencyInstance(); 
     // Here is a simple display of available products 
     System.out.println (" "); 
     System.out.println ("Welcome to the IP2 part 2!"); 
     System.out.println (" "); 
     System.out.println("Enter prices for each product"); 
     System.out.println("Octopus tentacles: "); 
     price[0] = input.nextDouble(); 
     System.out.println("Rat Droppings: "); 
     price[1] = input.nextDouble(); 
     System.out.println("Sharks teeth: "); 
     price[2] = input.nextDouble(); 
     System.out.println("Mountain Oysters: "); 
     price[3] = input.nextDouble(); 

     System.out.println ("Please make a selection:"); 
     System.out.println ("1. Octopus Tentacles, 2. Rat Droppings"); 
     System.out.println ("3. Sharks teeth, 4. Mountain Oysters"); 
     System.out.println (" "); 
     // Changed while into an infinite loop that will break on any input other than 1, 2, 3, and 4. 
     while (true) 
     { 
      System.out.print("Enter selection (1 , 2, 3, 4): "); 
      result = input.nextInt(); 
      if (result == 1) 
      { 
       System.out.println("You selected Octopus tentacles, "+price[0]); 
       subTotal = price[0]*getQuantity(); 
      } 
      else if (result == 2) 
      { 
       System.out.println("You selected Rat droppings, "+price[1]); 
       subTotal = price[1]*getQuantity(); 
      } 
      else if (result == 3) 
      { 
       System.out.println("You selected Sharks teeth, "+price[2]); 
       subTotal = price[2]*getQuantity(); 
      } 
      else if (result == 4) 
      { 
       System.out.println("You selected Mountain Oysters, "+price[3]); 
       subTotal = price[3]*getQuantity(); 
      } 
      else 
      { 
       break; 
      } 
      System.out.println ("Your subTotal is: " +curForm.format(subTotal)); 
      salesTax = subTotal * .065; 
      System.out.println ("Your sales tax is: " +curForm.format(salesTax)); 
      totalSale = subTotal+salesTax; 
      System.out.println ("Your total sale price is: " +curForm.format(totalSale)); 
      System.out.println (" "); 
     } 

     System.out.println (" "); 
     /* 
     You don't need a second Scanner within the same scope 
     Scanner key = new Scanner(System.in); 
     */ 
    } 
    public static int getQuantity() 
    { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter quantity: "); 
     int q = input.nextInt(); 
     return q; 
    } 
} 
+0

@Powercat - вам было бы полезно всегда использовать фигурные скобки вокруг всех ваших условностей, даже однострочных, как пояснил Джон в своем ответе. – ziesemer

+0

Я понимаю эту кодировку здесь, однако, как объявить «цену» для нее? – Powercat

+0

Хорошо, я получил это объявление, и у него не было никаких ошибок, пока я не запустил его. Я удалил вход (прокомментировал), но не уверен, как я устанавливаю параметры так, чтобы объявленное значение попадало в необходимое пространство: System.out.print («Пожалуйста, введите цену (сумма цены w/no $):»); // Price = key.nextDouble(); System.out.println (""); – Powercat

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