java - 为什么我的数据在编译时会混淆?

标签 java arrays user-interface

有几件事我需要帮助。首先,当我编译时,我的产品编号和价格会混淆。为什么?其次,为什么产品类型总是返回null?我还想合并所有消息框,但我所做的每一次尝试都失败了。如果有人能引导我走向正确的方向,我将不胜感激。这是我的代码:

主要

package inventory4;
import java.util.Scanner;
import java.util.Arrays; //Needed to include data for arrays
import javax.swing.JOptionPane; //JOptionPane import tool

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");

     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);

  }




  for (int i = 0; i < inv.length; ++i)
  {

     JOptionPane.showMessageDialog(null, "Product Name: " + inv[i].getName());
     //Why can't I use this instead of having multiple boxes?:
     //JOptionPane.showMessageDialog(null, "Product Name: \nProduct Type: \nProduct Number: \nUnits in Stock: \nPrice Per Unit: " + inv[i].getName() +  inv[i].getUniqueType() + inv[i].getpNumber() + inv[i].getUnits(), + inv[i].getPrice());

     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; //combine total value to the end of the last object output
        JOptionPane.showMessageDialog(null, combinedData);  //Show Message

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


    } //end for


  } //end main


} //end class

项目

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) //This is used to set up the method
   {
      double combined = 0; //Loops through array after array is complete

      for (int i = 0; i < item.length; ++i)
      {
         combined = combined + item[i].calculateTotalPrice(); //Sets up to combine all TotalPrice
         //calculations in array
      } //end loop

      return combined;
   } //end method

} //end class

商品详情

package inventory4;

public class ItemDetails extends Items
{
    private String UniqueType;

    public ItemDetails()
    {
        super();
    }

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

public String enterUniqueType()
    {
        return UniqueType;
    }

public String setUniqueType()
   {
      return UniqueType;
   }

public String getUniqueType()
   {
      return UniqueType;
   }

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

最佳答案

// getter???
public String setUniqueType() {
    return UniqueType;
}

应该是:

//setter
public void setUniqueType(String type) {
    UniqueType = type;
}

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

应该是:

inv[count] = new ItemDetails(Name, pNumber, Units,Price );//look at the order 
inv[count].setUniqueType(Type);//you have not set it.

关于java - 为什么我的数据在编译时会混淆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5454552/

相关文章:

java - 服务器端对标准化数据进行排序/过滤

java - 无法连接到 Jetty 上运行的安全 Websocket

python - 如何遍历类似于 PHP 的 foreach 函数的 python 数组/对象

java - getContentPane().add() 和 add() 的意思一样吗

java - 以编程方式创建可独立控制的相同 ImageView

java - java无法向sql数据库写入数据但读取成功

php - 可以在 PHP 中将闭包传递给 usort 吗?

java - 二维数组未在网格中打印/不是完整数组?

java - Swing JTabbedPane如何设置滚动宽度?

winforms - 如何为不懂计算机的人实现 UI?