2013-07-03 4 views
-1

Я пишу программу, которая является симуляцией в магазине. Проблема в том, что когда я пытаюсь получить общее количество, это дает мне общее количество за последний предмет, который я купил, а не за все купленные предметы. Что я делаю неправильно, и что я могу исправить?Ошибка времени выполнения

import java.util.Scanner; 

public class Invoice { 

public static String partNum; 
public String description; 
public int quantity; 
public double price; 


    public String part_description(String parts){ 
       partNum=parts; 

       if(parts.equals("10")){ 
        description="This is a large metal hammer, $20";price=20;} 
       else if(parts.equals("15")){description="This is a small plastic hammer, $5";price= 5;} 
       else if(parts.equals("20")){description="This is a medium wooden hammer, $10";price=10;} 
       else if(parts.equals("25")){description="This is a bucket of paint, $25";price=25;} 
       else{description="No such part number exists.";} 
       return description; 
    } 
    public void setquantity(int amount){ 
     quantity=amount; 

    } 
    public int getquantity(){ 

     return quantity; 
    } 
    public void setprice(double cost){ 
     price=cost; 
     if(cost<0){cost=0;} 

    } 
    public double getprice(){ 
     return price; 
    } 
    public double getInvoiceAmount(double total){ 
     total=total+(quantity*price); 
     return total; 
    } 

    public static void main(String[] args){ 

     Scanner s1= new Scanner(System.in); 
     Invoice invoiceObject= new Invoice(); 
     boolean ask=true; 
     while(ask==true){ 


     System.out.println("Chose one of the fallowing part numbers: 10, 15, 20, 25"); 

     partNum=s1.nextLine(); 

     System.out.println(invoiceObject.part_description(partNum)); 

     System.out.printf("\nHow many #%s would you like to get: ", partNum); 
     int numOf=s1.nextInt(); 
     invoiceObject.setquantity(numOf); 



     System.out.println("would you like to keep shopping? chose true or false"); 
     ask=s1.nextBoolean(); 
     partNum=s1.nextLine(); 


     } 



     System.out.println("Your total price will be:$ "+invoiceObject.getInvoiceAmount(0)); 




}} 
+5

Это логическая ошибка ... не ошибка времени выполнения. –

ответ

0

Вы никогда не собираете общую цену в любом месте. У вас должна быть переменная типа totalSum. Вы хотите установить его на 0, прежде чем пользователь начнет что-либо делать. Затем вы хотите увеличить цены.

//pseudo code. 
totalSum = totalSum + (quantity*price) 

//at the end 
print(totalSum) 
+0

То, что я сделал в getInvoiceAmount Я написал total = total + (количество * цена); – user2005617

+0

Да, но вы проходите только в «0» .... как вы думаете, вы должны пройти вместо этого? И нужно ли просто позвонить ему один раз? Что делать, если вы добавляете к сумме несколько раз, вы не должны ее называть из другого места? –

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