使用用户输入创建新对象[JAVA] [英] Using user input to create a new object [JAVA]

查看:125
本文介绍了使用用户输入创建新对象[JAVA]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个程序来创建一个新的对象,只要用户为某个对象输入新的信息。目前我有这个。

  import java.util.Scanner; 
public class Main
{
public static void main(String args [])
{
String input;
扫描仪扫描仪=新扫描仪(System.in);
do
{
System.out.println(Computer Menu);
System.out.println(1。添加新的桌面信息);
System.out.println(2。添加新的笔记本电脑信息);
System.out.println(3。显示所有计算机信息);
System.out.println(4.退出);

System.out.print(请输入1到4:);
input =(scanner.nextLine());
if(input.equals(1))
{
桌面desktop1 = new Desktop();
System.out.println(请输入桌面ID:);
desktop1.setID(scanner.nextLine());
System.out.println(请输入桌面处理器速度:);
desktop1.setProcess(Double.parseDouble(scanner.nextLine()));
System.out.println(请进入桌面RAM:);
desktop1.setRam(Double.parseDouble(scanner.nextLine()));
System.out.println(请进入桌面硬盘空间:);
desktop1.setDisk(Double.parseDouble(scanner.nextLine()));
System.out.println(请输入桌面监视器类型:);
desktop1.setMonitor(scanner.nextLine());
System.out.println(请输入桌面价格:);
desktop1.setPrice(Double.parseDouble(scanner.nextLine()));
desktop1.displayComputer();
}
else if(input.equals(2))
{
笔记本电脑laptop1 = new Laptop();
System.out.println(请输入笔记本电脑ID:);
laptop1.setID(scanner.nextLine());
System.out.println(请输入笔记本电脑处理器速度:);
laptop1.setProcess(Double.parseDouble(scanner.nextLine()));
System.out.println(请输入笔记本电脑RAM:);
laptop1.setRam(Double.parseDouble(scanner.nextLine()));
System.out.println(请输入笔记本电脑硬盘空间:);
laptop1.setDisk(Double.parseDouble(scanner.nextLine()));
System.out.println(请输入笔记本电脑重量:);
laptop1.setWeight(Double.parseDouble(scanner.nextLine()));
System.out.println(请输入笔记本电脑价格:);
laptop1.setPrice(Double.parseDouble(scanner.nextLine()));
laptop1.displayComputer();
}

计算机超类

  public class Computer 
{
String ID;
双进程;
双ram;
双盘;
双价;

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;
}
String getWeight()
{
返回重量;
}

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时,应该显示所有创建的对象。我不知道如何让他们的工作请帮忙。

解决方案

使用您提供的限制信息,我尝试解决问题:


  1. 我没有添加任何属性到桌面和笔记本电脑类,覆盖toString方法在这两个类ie



  
public class Laptop {
public String toString(){
returnLaptop [getClass()=+ getClass()+,hashCode()=
+ hashCode()+,toString()=+ super.toString()+]
}
}



  
public class桌面{
public String toString(){
returnDesktop [getClass()=+ getClass()+,hashCode()=
+ hashCode()+,toString )=+ super.toString()+];
}
}

您的主要方法如下所示:

  public static void main(String args [])
{
String input;
扫描仪扫描仪=新扫描仪(System.in);
列表< Object> listOfObject = new ArrayList<>();
do
{
System.out.println(Computer Menu);
System.out.println(1。添加新的桌面信息);
System.out.println(2。添加新的笔记本电脑信息);
System.out.println(3。显示所有计算机信息);
System.out.println(4.退出);

System.out.print(请输入1到4:);
input =(scanner.nextLine());
if(input.equals(1)){
Desktop desktop1 = new Desktop();
listOfObject.add(desktop1);
} else if(input.equals(2)){
笔记本电脑laptop1 = new Laptop();
listOfObject.add(laptop1);
} else if(input.equals(3)){
for(Object obj:listOfObject){
if(obj instanceof Desktop){
桌面d1 =(桌面)OBJ;
System.out.println(d1.toString());
} else if(obj instanceof Laptop){
Laptop l1 =(Laptop)obj;
System.out.println(l1.toString());
}
}
}
} while(!input.equals(4));
}


Hi I am trying to create a program to create a new object whenever the user inputs a new information for a certain object. Currently I have this.

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

Computer super class

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

Desktop sub class

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

Laptop sub class

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

So There is one class and 2 sub classes but I don't think it matters. So if i entered 1 it should create a new object for Desktop and if i entered 2 it would create a new object for Laptop. And when I enter 3 it should show all the objects created. I don't know how to get any of them to work please help.

解决方案

With the limit information provided by you I try to solve the issue:

  1. I am not adding any attributes to Desktop and Laptop class, overriding toString Method in both the Classes i.e.


public class Laptop {
    public String toString() {
        return "Laptop [getClass()=" + getClass() + ", hashCode()="
                + hashCode() + ", toString()=" + super.toString() + "]";
    }
}


public class Desktop {
    public String toString() {
        return "Desktop [getClass()=" + getClass() + ", hashCode()="
                + hashCode() + ", toString()=" + super.toString() + "]";
    }
}

Your Main method look like:

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

这篇关于使用用户输入创建新对象[JAVA]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆