【问题标题】:How do I update the variable totalCost in the second class如何更新第二类中的变量 totalCost
【发布时间】:2019-11-26 22:21:44
【问题描述】:

程序提示用户输入汉堡包、沙拉、薯条、薯条和苏打水的数量,然后显示订单的总数。应用程序应该包含一个带有构造函数的 Food 对象,该构造函数接受一个项目的价格、脂肪、碳水化合物和纤维。食用方法 应该返回商品的价格并返回脂肪、碳水化合物和纤维。打印的行应该是总成本,但它一直打印总成本为 0 美元。问题是累积成本的变量在第二类中没有更新。

    import java.util.Scanner;
import java.lang.String;
import java.text.NumberFormat;

public class LunchOrder {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double totalCost = 0;
        NumberFormat money = NumberFormat.getCurrencyInstance();

        System.out.print("Enter number of hamburgers: ");
        double hamburgerTotal = input.nextInt();
        Food foodOne = new Food("Hamburger", 1.85, 9.0, 33, 1, hamburgerTotal);
        System.out.println(foodOne + "\n");
        totalCost += hamburgerTotal * 1.85;    
        totalCost += foodOne.getTotalCost(); 

        System.out.print("Enter number of salads: ");
        double saladTotal = input.nextInt();
        Food foodTwo = new Food("Salad", 2.00, 1, 11, 5, saladTotal);
        System.out.println(foodTwo + "\n");
        totalCost += saladTotal * 2.00; 
        totalCost += foodTwo.getTotalCost();

        System.out.print("Enter number of french fries: ");
        double frenchFrieTotal = input.nextInt();
        Food foodThree = new Food("French fries", 1.30, 11, 36, 4, frenchFrieTotal);
        System.out.println(foodThree + "\n");
        totalCost += frenchFrieTotal * 1.30;       
        totalCost += foodThree.getTotalCost();

        System.out.print("Enter number of sodas: ");
        double sodaTotal = input.nextInt();
        Food foodFour = new Food("Soda", 0.95, 0, 38, 0, sodaTotal);
        System.out.println(foodFour + "\n"); 
        totalCost += sodaTotal * 0.95;  
        totalCost += foodFour.getTotalCost();

        System.out.println(foodFour.setPrice());
    }
}

class Food {
    String item;
    double price;
    double fat;
    double carb;
    double fiber;
    double total;
    double foodTotal;
    double totalCost;
    NumberFormat money = NumberFormat.getCurrencyInstance();

    public  Food (String nItem, double nPrice, double nFat, double nCarb, double nFiber, double hamburgerTotal) {
        item = nItem;
        price = nPrice;
        fat = nFat;
        carb = nCarb;
        fiber = nFiber;
        foodTotal = hamburgerTotal;
        totalCost = totalCost +(price * foodTotal);
    }

    public void total() {
        double totalCost = price * foodTotal;
        totalCost += (price * foodTotal);
        System.out.println(money.format(totalCost));
        }

    public double getTotalCost(){ 
        return totalCost; 
    }

    public String setPrice() {
        String priceString; 

        priceString = "Your order comes to: " + totalCost;
        return(priceString);
    }

    public String toString() {
        String orderString;

        orderString =  "Each " + item + " has " + fat + "g of fat, "
                + carb + "g of carbs, and " + fiber + ".g of fiber.";
        return(orderString);
    }
}

【问题讨论】:

    标签: java class object methods


    【解决方案1】:

    您不需要在第二个类中使用 totalCost,因为 Food 对象是单个实体,而不是保存所有已创建对象的总和

    话虽如此,这种方法似乎是正确的

         double totalCost = 0;
    
        Food hamburger = new Food(1.85, 9.0, 33, 1);
        totalCost += hamburger.getPrice() * hamburgerTotal;
    
        // get more food 
    
        System.out.print(totalCost);
    

    总成本定义为商品数量乘以价格

    并且构造函数不需要任何总值,因为它没有包含在描述中

    带有构造函数的食物对象,该构造函数接受商品的价格、脂肪、碳水化合物和纤维

    public  Food (double nPrice, double nFat, double nCarb, double nFiber) {
        price = nPrice;
        fat = nFat;
        carb = nCarb;
        fiber = nFiber;
    }
    

    【讨论】:

      【解决方案2】:

      双变量“totalCost”在LunchOrder 和Food 类中都声明了。

      所以最后更新的 totalCost 值应该发送到 Food 类中的 setPrice()

      setPrice() 中使用的 totalCost 变量也是 Food 类变量,要打印的变量是 LunchOrder 变量。

      LunchOrder 类中的更新代码

        System.out.println(foodFour.setPrice(totalCost));
      

      更新了 setPrice()

      public String setPrice(double total) {
          String priceString;
          this.total=total;
          priceString = "Your order comes to: " + total;
          return(priceString);
      }
      

      【讨论】:

        【解决方案3】:

        如果您只想打印总价,则不需要调用 setPrice() 方法

        而不是调用 setPrice() 方法

        System.out.println(foodFour.setPrice());
        

        可以直接打印

        System.out.println(Your order comes to: " + totalCost);
        

        【讨论】:

          猜你喜欢
          • 2017-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-25
          • 1970-01-01
          • 2020-04-05
          • 2019-05-02
          相关资源
          最近更新 更多