繁体   English   中英

无法得到这个编译,我做错了什么?

[英]Can't get this to compile, what am I doing wrong?

好的,所以我可以看到第33行的“setUniqueType”和第50行的“ItemDetails”是需要纠正的,但我无法弄清楚它有什么问题以及如何解决它。 请帮忙,以便我可以参加我的计划......

主要

package inventory4;
import java.util.Scanner;
import java.util.Arrays; 
import javax.swing.JOptionPane; 

public class RunApp
{
 public static void main(String[] args)
   {

  Scanner input = new Scanner(System.in);

  ItemDetails theItem = new ItemDetails();

  int number;
  String Name = "";
  String Type = "";

  String sNumber = JOptionPane.showInputDialog(null,"How many items are to be put into inventory count?:  ");
  number = Integer.parseInt(sNumber);

  ItemDetails[] inv = new ItemDetails[number];

  for (int count = 0; count < inv.length; ++count)
  {
     Name = JOptionPane.showInputDialog(null,"What is item " + (count + 1) + "'s name?");
     theItem.setName(Name);


     Type = JOptionPane.showInputDialog(null,"Enter " + Name + "'s product type");

     theItem.setUniqueType(Type);


     String spNumber = JOptionPane.showInputDialog(null,"Enter " + Name + "'s product number");
     double pNumber = Double.parseDouble(spNumber);
     theItem.setpNumber(pNumber);

     String sUnits = JOptionPane.showInputDialog(null,"How many " + Name + "s are there in inventory?");

     double Units = Double.parseDouble(sUnits);
     theItem.setUnits(Units);

     String sPrice = JOptionPane.showInputDialog(null,Name + "'s cost");
     double Price = Double.parseDouble(sPrice);
     theItem.setPrice(Price);


      inv[count] = new ItemDetails(Name, Price, Units, pNumber, Type);
  }



  for (int i = 0; i < inv.length; ++i)
  {
     JOptionPane.showMessageDialog(null, "Product Name" + inv[i].getName());

     JOptionPane.showMessageDialog(null, "Product Type" +  inv[i].getUniqueType());

     JOptionPane.showMessageDialog(null, "Product Number" + inv[i].getpNumber());

     JOptionPane.showMessageDialog(null, "Amount of Units in Stock" + inv[i].getUnits());

     JOptionPane.showMessageDialog(null, "Price per Unit" + inv[i].getPrice());

     JOptionPane.showMessageDialog(null, String.format("Total cost for %s in stock: $%.2f", inv[i].getName(), inv[i].calculateTotalPrice()));

     JOptionPane.showMessageDialog(null,String.format("Restocking fee for %s is $%.2f", inv[i].getName(), inv[i].calculateRestock()));

     String combinedData = inv[i].toString();

     if(i == (inv.length -1)){

        String lastItem = String.format("\nTotal Cost for all items entered: $%.2f\n", Items.getCombinedCost(inv));

        combinedData = combinedData + lastItem; 
        JOptionPane.showMessageDialog(null, combinedData);

     }else{
        JOptionPane.showMessageDialog(null, combinedData);
     }


      } //end for


   } //end main


} //end class

ITEMS

package inventory4;


public class Items implements Comparable
{
   private String Name;
   public double pNumber, Units, Price;
   String allInfo;
   public Items()
   {
  Name = "";
  pNumber = 0.0;
  Units = 0.0;
  Price = 0.0;
   }

   public int compareTo(Object item)
   {

      Items tmp = (Items)item;

      return this.getName().compareTo(tmp.getName());
   } // end compareTo method

   public Items(String productName, double productNumber, double unitsInStock, double unitPrice)
   {
  Name = productName;
  pNumber = productNumber;
  Units = unitsInStock;
  Price = unitPrice;
   }

public String toString()
{
   StringBuffer allInfo = new StringBuffer();


   allInfo.append(String.format("Name: %s\n pNumber: %.0f \n Units: %.0f \n Price: %.2f\n",
   getName(),getpNumber(),getUnits(),getPrice()));

   return allInfo.toString();
   }


   //setter methods
   public void setName(String n)
   {
  Name = n;
   }

   public void setpNumber(double no)
   {
      pNumber = no;
   }

   public void setUnits(double u)
   {
      Units = u;
   }

   public void setPrice(double p)
   {
      Price = p;
   }

   //getter methods
   public String getName()
   {
       return Name;
   }

  public double getpNumber()
   {
      return pNumber;
   }

   public double getUnits()
   {
       return Units;
   }

    public double getPrice()
   {
       return Price;
   }

     public double calculateTotalPrice()
   {
       return (Units * Price);
   }

   public static double getCombinedCost(Items[] item) 
   {
  double combined = 0; 

  for (int i = 0; i < item.length; ++i)
  {
     combined = combined + item[i].calculateTotalPrice(); 
  } //end loop

  return combined;
   } //end method

} //end class

项目详情

package inventory4;

public class ItemDetails extends Items
 {
    private String UniqueType;

    public ItemDetails()
 {
     super();
 }

public String enterUniqueType()
{
    return UniqueType;
}

public String getUniqueType()
{
      return UniqueType;
}

 public double calculateRestock() //setting up to calculate the restocking fee at 5%
    {
       return (Price * .05);
    }
}

编译错误:

RunApp.java:31: cannot find symbol
symbol  : method setUniqueType(java.lang.String)
location: class ItemDetails
     theItem.setUniqueType(Type);
            ^
RunApp.java:48: cannot find symbol
symbol  : constructor ItemDetails(java.lang.String,double,double,double,java.lan
g.String)
location: class ItemDetails
      inv[count] = new ItemDetails(Name, Price, Units, pNumber, Type);
                   ^
2 errors
  1. 您的ItemDetails类没有setUniqueType方法。 你应该添加一个。
  2. 您正在使用的构造函数:48是“String,double,double,double,String”但您的构造函数实际上只是“String double double double”要么删除Type要么将String参数添加到Item构造函数的末尾,或者使用五个参数创建一个ItemDEtails构造函数。
  3. 您的ItemDetails没有与该参数匹配的构造函数。 如果要链接构造函数,请在ItemDetails中声明它

链接构造函数:

public ItemDetails(String productName, double productNumber, double unitsInStock, double unitPrice
    super(productName,productNumber,unitsInStock,unitPrice);
}

关于ItemDetails:看起来你的ItemDetails构造函数,继承自Items,只需要4个args,你传递它5。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM