使用用户输入创建新对象
嗨我正在尝试创建一个程序,以便在用户输入特定对象的新信息时创建新对象。 目前我有这个。
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(""); } }
所以有一个class级和两个子class级,但我认为这不重要。 因此,如果我输入1,它应该为Desktop创建一个新对象,如果我输入2,它将为Laptop创建一个新对象。 当我输入3时,它应该显示所有创建的对象。 我不知道如何让他们中的任何一个工作,请帮忙。
有了您提供的限制信息,我尝试解决问题:
- 我没有向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() + "]"; } }
您的主要方法如下:
public static void main (String args[]) { String input; Scanner scanner = new Scanner(System.in); List
假设您有一个名为Computer的类/接口,笔记本电脑和桌面可以从中扩展。
1)添加列表以存储计算机实例。
List computers = new ArrayList ()
2)将动作“1”和“2”添加到该列表中,例如
computers.add(desktop1);
3)将动作“3”打印出列表。 假设你已经实现了toString()
for (Computer computer : computers) { System.out.println(computer); }