Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 坚持创建新对象_Java_Object_Java.util.scanner - Fatal编程技术网

Java 坚持创建新对象

Java 坚持创建新对象,java,object,java.util.scanner,Java,Object,Java.util.scanner,我正在尝试创建一个名为item1的新对象,它属于StockItem类。我已经在类文件中为StockItem创建了构造函数,使所有变量都是公共的,但是我现在尝试创建它的新实例,但是希望用户使用scanner类输入变量 我将如何着手创建我的objec的新实例?我也创建了scanner类,并让它读取输入,但无法识别我正在键入的输入是新项目的属性 任何帮助都将不胜感激,谢谢 StockItem Constructor: public StockItem (String itemID, String i

我正在尝试创建一个名为item1的新对象,它属于StockItem类。我已经在类文件中为StockItem创建了构造函数,使所有变量都是公共的,但是我现在尝试创建它的新实例,但是希望用户使用scanner类输入变量

我将如何着手创建我的objec的新实例?我也创建了scanner类,并让它读取输入,但无法识别我正在键入的输入是新项目的属性

任何帮助都将不胜感激,谢谢

StockItem Constructor:

public StockItem (String itemID, String itemDesc, Double price, int quantity, int reOrderLevel)
{       
        this.itemID = itemID;
        this.itemDesc = itemDesc;
        this.price = price;
        this.quantity = quantity;
        this.reOrderLevel = reOrderLevel;
}
扫描仪输入代码:

else if (i==1)
    {


        StockListInterface.doAddItem(item);





        System.out.println("Add New Item");
        System.out.println("****************");

        Scanner scanner1 = new Scanner(System.in);

        System.out.println("Enter ID    :>");            
        String itemID = scanner1.nextLine();

        System.out.println("Enter Description    :>");
        String itemDesc = scanner1.nextLine();

        System.out.println("Enter Price    :>");
        String price = scanner1.nextLine();

        System.out.println("Enter Quantity    :>");
        String quantity = scanner1.nextLine();

        System.out.println("Enter Re-Order Level    :>");
        String reOrderLevel = scanner1.nextLine();

        System.out.println("Enter another? (Y/N)    :>");



    }
你应该这样做:

StockItem stockItem = new StockItem (itemID,  itemDesc,  Double.valueOf(price),  Integer.valueOf(quantity),  Integer.valueOf(reOrderLevel));

好吧,为了制造一个新的物体,你只要上这门课

StockItem item = new StockItem("", "", 0.0, 0, 0);
这将加载包含所有空变量的新对象

要使用scanner类更新每个项目,只需执行以下操作:

用于更新项目ID

System.out.println("Enter ID    :>");            
String itemID = scanner1.nextLine();
item.itemID = itemID;
希望这有助于删除

StockListInterface.doAddItem(item);
在以下内容之后添加:

 System.out.println("Enter another? (Y/N)    :>");
守则:

StockItem item = new StockItem(itemID, itemDesc, Double.valueOf(price), 
 Int.ValueOf(quantity), Int.ValueOf(reOrderLevel));
StockListInterface.doAddItem(item);
假设StockListInterface.doAddItem检索StockList的参数

我已经为中的StockItem创建了构造函数 类文件,使所有变量公开

这是一个非常糟糕的主意。这些变量应该是私有的

你犯了一个典型的新手错误,把不属于你的用户交互混为一谈。这是一个分两步的过程:

  • 从用户获取所有值
  • 创建实例

  • 构造函数不需要知道或关心传递给它的值来自何处。

    然后使用构造函数创建一个对象

    Double priceVal = Double.parseDouble(price);
    int qty = Integer.parseInt(quantity);
    int level = Integer.parseInt(reOrderLevel);
    
    StockItem stock1 = new StockItem(itemID,  itemDesc,  priceVal,  qty,  level);
    

    你试了什么?你犯了什么错误?当我这样做时,我得到了错误:“找不到符号”。它不能识别我的变量,因为你可能会用传递字符串来代替Double和int值。