Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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_Class_Object_Dynamic_User Input - Fatal编程技术网

使用用户输入创建新对象[JAVA]

使用用户输入创建新对象[JAVA],java,class,object,dynamic,user-input,Java,Class,Object,Dynamic,User Input,嗨,我正在尝试创建一个程序,每当用户输入某个对象的新信息时,就创建一个新对象。目前我有这个 import java.util.Scanner; public class Main { public static void main (String args[]) { String input; Scanner scanner = new Scanner(System.in); do { System.out.println("Comput

嗨,我正在尝试创建一个程序,每当用户输入某个对象的新信息时,就创建一个新对象。目前我有这个

import java.util.Scanner;
public class Main
{
    public static void main (String args[]) 
{
    String input;
    Scanner scanner = new Scanner(System.in);
    do
    {
        System.out.println("Computer Menu");  
        System.out.println("1. Add a new Desktop Information");
        System.out.println("2. Add a new Laptop Information");
        System.out.println("3. Display all Computer Information");
        System.out.println("4. Quit");

        System.out.print("Please enter either 1 to 4: "); 
        input =(scanner.nextLine());
        if (input.equals("1"))
        {
            Desktop desktop1 = new Desktop();
            System.out.println("Please enter Desktop ID: ");
            desktop1.setID (scanner.nextLine());
            System.out.println("Please enter Desktop Processor Speed: ");
            desktop1.setProcess (Double.parseDouble(scanner.nextLine()));
            System.out.println("Please enter Desktop RAM: ");
            desktop1.setRam (Double.parseDouble(scanner.nextLine()));
            System.out.println("Please enter Desktop Harddisk Space: ");
            desktop1.setDisk (Double.parseDouble(scanner.nextLine()));
            System.out.println("Please enter Desktop Monitor Type: ");
            desktop1.setMonitor (scanner.nextLine());
            System.out.println("Please enter Desktop Price: ");
            desktop1.setPrice (Double.parseDouble(scanner.nextLine()));
            desktop1.displayComputer();
        }
        else if (input.equals("2"))
        {
            Laptop laptop1 = new Laptop();
            System.out.println("Please enter Laptop ID: ");
            laptop1.setID (scanner.nextLine());
            System.out.println("Please enter Laptop Processor Speed: ");
            laptop1.setProcess (Double.parseDouble(scanner.nextLine()));
            System.out.println("Please enter Laptop RAM: ");
            laptop1.setRam (Double.parseDouble(scanner.nextLine()));
            System.out.println("Please enter Laptop Harddisk Space: ");
            laptop1.setDisk (Double.parseDouble(scanner.nextLine()));
            System.out.println("Please enter Laptop Weight: ");
            laptop1.setWeight (Double.parseDouble(scanner.nextLine()));
            System.out.println("Please enter Laptop Price: ");
            laptop1.setPrice (Double.parseDouble(scanner.nextLine()));
            laptop1.displayComputer();
         }
计算机超级类

public class Computer
{
    String ID;
    double process;
    double ram;
    double disk;
    double price;

    void setID (String _id)
    {
        ID = _id;
    }
    void setProcess (double _Process)
    {
        process = _Process;
    }
    void setRam (double _Ram)
    {
        ram = _Ram;
    }
    void setDisk (double _Disk)
    {
        disk = _Disk;
    }
    void setPrice (double _Price)
    {
        price = _Price;
    }

    String getID()
    {
        return ID;
    }
    double getProcess()
    {
        return process;
    }
    double getRam()
    {
        return ram;
    }
    double getDisk()
    {
        return disk;
    }
    double getPrice()
    {
        return price;
    }

    void displayComputer()
    {
        System.out.println("Computer ID: " + getID());
        System.out.println("Processor Speed: " + getProcess());
        System.out.println("RAM: " + getRam());
        System.out.println("Harddisk: " + getDisk());
        System.out.println("Price: " + getPrice());
    }
}
桌面子类

public class Desktop extends Computer
{
    String monitor;

    void setMonitor (String _Monitor)
    {
        monitor = _Monitor;
    }
    String getMonitor()
    {
        return monitor;
    }

    void displayComputer()
    {
        System.out.println("Computer ID: " + getID());
        System.out.println("Processor Speed: " + getProcess());
        System.out.println("RAM: " + getRam());
        System.out.println("Harddisk: " + getDisk());
        System.out.println("Monitor Type: " + getMonitor());
        System.out.println("Price: " + getPrice());
        System.out.println("");
    }
}
public class Desktop extends Computer
{
    double Weight;

    void setWeight(String _Weight)
    {
        Weight= _Weight;
    }
    String getWeight()
    {
        return Weight;
    }

    void displayComputer()
    {
        System.out.println("Computer ID: " + getID());
        System.out.println("Processor Speed: " + getProcess());
        System.out.println("RAM: " + getRam());
        System.out.println("Harddisk: " + getDisk());
        System.out.println("Weight: " + getWeight());
        System.out.println("Price: " + getPrice());
        System.out.println("");
    }
}
笔记本电脑子类

public class Desktop extends Computer
{
    String monitor;

    void setMonitor (String _Monitor)
    {
        monitor = _Monitor;
    }
    String getMonitor()
    {
        return monitor;
    }

    void displayComputer()
    {
        System.out.println("Computer ID: " + getID());
        System.out.println("Processor Speed: " + getProcess());
        System.out.println("RAM: " + getRam());
        System.out.println("Harddisk: " + getDisk());
        System.out.println("Monitor Type: " + getMonitor());
        System.out.println("Price: " + getPrice());
        System.out.println("");
    }
}
public class Desktop extends Computer
{
    double Weight;

    void setWeight(String _Weight)
    {
        Weight= _Weight;
    }
    String getWeight()
    {
        return Weight;
    }

    void displayComputer()
    {
        System.out.println("Computer ID: " + getID());
        System.out.println("Processor Speed: " + getProcess());
        System.out.println("RAM: " + getRam());
        System.out.println("Harddisk: " + getDisk());
        System.out.println("Weight: " + getWeight());
        System.out.println("Price: " + getPrice());
        System.out.println("");
    }
}

所以有一个类和两个子类,但我认为这并不重要。所以,如果我输入1,它应该为桌面创建一个新对象,如果我输入2,它将为笔记本创建一个新对象。当我输入3时,它应该显示所有创建的对象。我不知道如何让它们中的任何一个工作,请帮助。

假设您有一个名为Computer的类/接口,笔记本电脑和台式机可以从中扩展

1) 添加列表以存储计算机实例

List<Computer> computers = new ArrayList<Computer>()
3) 使操作“3”打印出列表。这假设您已经实现了toString()


根据您提供的限额信息,我试图解决以下问题:

  • 我没有向Desktop和Laptop类添加任何属性,而是在这两个类中重写toString方法,即
  • 您的主要方法如下所示:

    public static void main (String args[]) 
        {
            String input;
            Scanner scanner = new Scanner(System.in);
            List<Object> listOfObject = new ArrayList<>();
            do
            {
                System.out.println("Computer Menu");  
                System.out.println("1. Add a new Desktop Information");
                System.out.println("2. Add a new Laptop Information");
                System.out.println("3. Display all Computer Information");
                System.out.println("4. Quit");
    
                System.out.print("Please enter either 1 to 4: "); 
                input =(scanner.nextLine());
                if (input.equals("1")){
                    Desktop desktop1 = new Desktop();
                    listOfObject.add(desktop1);
                }else if (input.equals("2")){
                    Laptop laptop1 = new Laptop();
                    listOfObject.add(laptop1);
                 }else if(input.equals("3")){
                     for(Object obj : listOfObject){
                         if(obj instanceof Desktop){
                            Desktop d1 = (Desktop)obj;
                            System.out.println(d1.toString());
                         }else if(obj instanceof Laptop){
                             Laptop l1 = (Laptop)obj;
                             System.out.println(l1.toString());
                         }
                     }
                 }
            }while(!input.equals("4"));
        }
    
    publicstaticvoidmain(字符串参数[])
    {
    字符串输入;
    扫描仪=新的扫描仪(System.in);
    List ListoObject=new ArrayList();
    做
    {
    System.out.println(“计算机菜单”);
    System.out.println(“1.添加新的桌面信息”);
    System.out.println(“2.添加新的笔记本电脑信息”);
    System.out.println(“3.显示所有计算机信息”);
    System.out.println(“4.Quit”);
    System.out.print(“请输入1到4:”);
    输入=(scanner.nextLine());
    如果(输入等于(“1”)){
    桌面桌面1=新桌面();
    添加对象列表(桌面1);
    }else if(输入等于(“2”)){
    Laptop laptop1=新笔记本电脑();
    添加对象列表(laptop1);
    }else if(输入等于(“3”)){
    对于(对象对象:listOfObject){
    if(桌面的obj实例){
    桌面d1=(桌面)obj;
    System.out.println(d1.toString());
    }else if(笔记本电脑的obj实例){
    笔记本电脑l1=(笔记本电脑)obj;
    System.out.println(l1.toString());
    }
    }
    }
    }而(!input.equals(“4”));
    }
    
    将对象状态存储在HashMap或任何其他集合中,即当输入为1时,创建桌面对象并存储在集合中;当用户单击2时,创建笔记本对象并存储在同一集合中;当用户输入为3时,打印或迭代集合并获取对象信息。
    
    public class Desktop {
        public String toString() {
            return "Desktop [getClass()=" + getClass() + ", hashCode()="
                    + hashCode() + ", toString()=" + super.toString() + "]";
        }
    }
    public static void main (String args[]) 
        {
            String input;
            Scanner scanner = new Scanner(System.in);
            List<Object> listOfObject = new ArrayList<>();
            do
            {
                System.out.println("Computer Menu");  
                System.out.println("1. Add a new Desktop Information");
                System.out.println("2. Add a new Laptop Information");
                System.out.println("3. Display all Computer Information");
                System.out.println("4. Quit");
    
                System.out.print("Please enter either 1 to 4: "); 
                input =(scanner.nextLine());
                if (input.equals("1")){
                    Desktop desktop1 = new Desktop();
                    listOfObject.add(desktop1);
                }else if (input.equals("2")){
                    Laptop laptop1 = new Laptop();
                    listOfObject.add(laptop1);
                 }else if(input.equals("3")){
                     for(Object obj : listOfObject){
                         if(obj instanceof Desktop){
                            Desktop d1 = (Desktop)obj;
                            System.out.println(d1.toString());
                         }else if(obj instanceof Laptop){
                             Laptop l1 = (Laptop)obj;
                             System.out.println(l1.toString());
                         }
                     }
                 }
            }while(!input.equals("4"));
        }