扫描器输入没有作为参数读取方法调用



首先这里是代码:

产品信息:

public class ProductInformation
{
    public String code;
    public String itemName;
    public double price;
    //Constructor
    public ProductInformation()
    { itemName="-";
      code="-";
      price=0;}
    //Setter
    public void setItemName(String itemName)
    { this.itemName=itemName;}
    public void setCode(String code)
    { this.code=code;}
    public void setPrice(double price)
    { this.price=price;}
    //Getter
    public String getItemName()
    { return itemName;}
    public double getPrice()
    { return price;}
    public String getCode()
    { return code;}
    //Products
    public void getProduct(String code)
    {   if(code == "A001"){
            setCode("A001");
            setItemName("Mouse  ");
            setPrice(100);}
        else if(code == "A002"){
            setCode("A002");
            setItemName("Monitor    ");
            setPrice(2500);}
        else if(code == "A003"){
            setCode("A003");
            setItemName("Keyboard");
            setPrice(200);}
        else if(code == "A004"){
            setCode("A004");
            setItemName("Flash Disk");
            setPrice(300);}
        else if(code == "A005"){
            setCode("A005");
            setItemName("Hard Disk");
            setPrice(1500);}
            }
}
import java.util.*;

产品展示:

public class ProductDisplay
{   public ProductInformation product;
    public ProductDisplay()
    {
        System.out.println("tttt  RG COMPUTER SHOP");
        System.out.println("tttt    Makati City");
        System.out.println("ttP R O D U C TtI N F O R M A T I O N");
        System.out.println("-------------------------------------------------------");
        System.out.println("ttCodettDescriptionttUnit Price");
        System.out.println("-------------------------------------------------------");
        product = new ProductInformation();
        product.getProduct("A001");
        display();
        product = new ProductInformation();
        product.getProduct("A002");
        display();
        product = new ProductInformation();
        product.getProduct("A003");
        display();
        product = new ProductInformation();
        product.getProduct("A004");
        display();
        product = new ProductInformation();
        product.getProduct("A005");
        display();
    }
    // Display Method
    public void display()
    {  System.out.println("tt" + product.getCode()
                        + "tt" + product.getItemName()
                        + "tt" + product.getPrice()); }
}

我的问题是在PointOfSale这里我试着让买家通过输入产品代码来决定输入getProduct后,我得到的总是"A005",即使我输入"A001"或其他东西。我认为product.getProduct(code)没有工作。有人能帮我解决这个问题,这样我就可以继续编写这个

import java.util.*;
public class PointOfSale extends ProductDisplay
{   
    public PointOfSale()
    {   System.out.print("nPurchase Item(y/n)?");
        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        if("y".equalsIgnoreCase(line)){
        OpenOrder();
            }
    }
    //=============================================
    public void OpenOrder() // New Order
    {   ArrayList<String> ProductList = new ArrayList<String>();
        ProductList.add("A001");    ProductList.add("A002");
        ProductList.add("A003");    ProductList.add("A004");
        ProductList.add("A005");
        System.out.print("Select Product Code:");
        Scanner sc = new Scanner(System.in);
        String code = sc.next();
        if(ProductList.contains(code))
        { product.getProduct(code);
          display(); EnterQuantity();       }
        else System.out.print("Product Code is Invalidn"); System.exit(0);}
    //==============================================
    public void EnterQuantity()  //Entering Quantity
    {
        try{
            System.out.print("Enter Quantity:");
            Scanner sc = new Scanner(System.in);
            int quantity = sc.nextInt();
            double amount = quantity * product.getPrice();
            System.out.print("Amount: " + amount);}
        catch (InputMismatchException nfe)
            {System.out.print("nInvalid Entry: Input must be a Number.n"); System.exit(0);}
    }
    // Main Method
    public static void main(String[] args)
    {   new PointOfSale(); }
}

您正在比较getProduct()方法中的字符串是否相等。字符串是对象,所以您可能想使用equals()方法:

public void getProduct(String code)
{   if(code.equals("A001")){
        setCode("A001");
        setItemName("Mouse  ");
        setPrice(100);}
    else if(code.equals("A002")){
        setCode("A002");
        setItemName("Monitor    ");
        setPrice(2500);}
    else if(code.equals("A003")){
        setCode("A003");
        setItemName("Keyboard");
        setPrice(200);}
    else if(code.equals("A004")){
        setCode("A004");
        setItemName("Flash Disk");
        setPrice(300);}
    else if(code.equals("A005")){
        setCode("A005");
        setItemName("Hard Disk");
        setPrice(1500);}
        }

一个主要的问题是你使用==比较字符串,你通常不应该这样做,因为如果一个对象引用与另一个对象引用相同,你不关心这个。相反,您关心的是两个String变量是否具有相同的String表示形式,为此请使用equals()或equalsIgnoreCase()方法。

最新更新