使用用户输入来创建新对象[JAVA]
发布于 2021-01-30 15:49:24
嗨,我正在尝试创建一个程序来在用户为某个对象输入新信息时创建一个新对象。目前我有这个。
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("");
}
}
因此,有一个班级和两个子班级,但我认为这并不重要。因此,如果我输入1,则应该为Desktop创建一个新对象,如果我输入2,则将为Laptop创建一个新对象。当我输入3时,它应该显示所有创建的对象。我不知道如何让他们工作,请帮助。
关注者
0
被浏览
129
1 个回答
-
使用您提供的限制信息,我尝试解决此问题:
- 我没有在Desktop和Laptop类中添加任何属性,在两个类中都覆盖了toString方法,即
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() + "]"; } }
您的Main方法如下所示:
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")); }
推荐阅读
-
使用用户输入来调用功能
2021-01-29 关注 0 浏览88 1答案
-
用户输入以创建对象
2021-01-29 关注 0 浏览88 1答案
-
尝试通过用户输入创建对象
2021-01-29 关注 0 浏览75 1答案
-
如何使用用户定义的类对象作为networkx节点?
2021-01-29 关注 0 浏览81 1答案
-
使用用户界面(Swing)在Java上启动ServerSocket冻结
2021-01-30 关注 0 浏览53 1答案
-
创建新用户时自动使用用户名和随机密码生成电子邮件
2021-01-31 关注 0 浏览98 1答案
-
使用反射创建新对象?
2021-01-30 关注 0 浏览63 1答案
-
如何使用用户名和密码连接Java中的MongoDB 3.2?
2021-01-30 关注 0 浏览171 1答案
-
在bash中的无限循环期间禁用用户输入
2021-02-01 关注 0 浏览119 1答案
-
Java Swing —通过弹出JFrame要求用户输入(并创建阻止线程)
2021-01-29 关注 0 浏览84 1答案