142 - 计算机类
Time Limit: 1000 Memory Limit: 65535
Submit: 563 Solved: 254
Description
构造计算机类,其中包含其配置信息:处理器、主板、内存、显示器、硬盘等设备,各个设备均有型号(字符串),特别的,处理器有主频(小数)和内核数(整数)、显示器有尺寸(整型)、内存和硬盘有容量数据(GB为单位)。请你尝试构造合适的类和类的关系来表示计算机,并为该计算机类添加计算价格(各设备价格之和)、打印配置信息等方法。重写相关类的equals方法,使得两个配置完全相同的计算机为相同的计算机。重写相关类的toString函数,打印计算机的配置信息。
在main函数中
Input
两个计算机对象,包含
CPU:型号、主频、内核
主板:型号
内存:容量
显示器:尺寸
硬盘:容量
Output
两个对象是否相等
两个对象的配置信息
Sample Input
Corei7 2.8 4
GIGABYTE-B250M-D3H
xiede-DDR3 8
SamsungC27F39 27
SEAGATE-ST1000DM010 2048
Corei7 2.8 4
GIGABYTE-B250M-D3H
xiede-DDR3 8
SamsungC27F39 27
SEAGATE-ST1000DM010 2048
Sample Output
true
Computer1:
CPU:
Model: Corei7
Frequency: 2.8
Number of Cores: 4
Mainboard:
Model: GIGABYTE-B250M-D3H
Memory:
Model: xiede-DDR3
Size: 8
Screen:
Model: SamsungC27F39
Size: 27
Harddisk:
Model: SEAGATE-ST1000DM010
Size: 2048
Computer2:
CPU:
Model: Corei7
Frequency: 2.8
Number of Cores: 4
Mainboard:
Model: GIGABYTE-B250M-D3H
Memory:
Model: xiede-DDR3
Size: 8
Screen:
Model: SamsungC27F39
Size: 27
Harddisk:
Model: SEAGATE-ST1000DM010
Size: 2048
HINT
为计算机类和各个组成配件都构造类,分别重写toString和equals方法
在计算机类中调用各个配件的equals和toString方法
回车用\n
小数用String.format("%.1f",1.234)
Pre Append Code
Post Append Code
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String cModel;
String cFrequency;
int cNumofCores;
String mModel;
String meModel;
int meSize;
String sModel;
int sSize;
String hModel;
int hSize;
cModel = scan.next();//读入
cFrequency = scan.next();
cNumofCores = scan.nextInt();
mModel = scan.next();
meModel = scan.next();
meSize = scan.nextInt();
sModel = scan.next();
sSize = scan.nextInt();
hModel = scan.next();
hSize = scan.nextInt();
Computer c1 = new Computer(cModel,cFrequency,cNumofCores,mModel,meModel,meSize,sModel,sSize,hModel,hSize);
cModel = scan.next();//读入
cFrequency = scan.next();
cNumofCores = scan.nextInt();
mModel = scan.next();
meModel = scan.next();
meSize = scan.nextInt();
sModel = scan.next();
sSize = scan.nextInt();
hModel = scan.next();
hSize = scan.nextInt();
Computer c2 = new Computer(cModel,cFrequency,cNumofCores,mModel,meModel,meSize,sModel,sSize,hModel,hSize);
System.out.println(c1.equals(c2));
System.out.println("Computer1:");
System.out.println(c1);
System.out.println("Computer2:");
System.out.println(c2);
}
}
class CPU {//CPU
String Model;
String Frequency;
int NumberofCores;
public CPU(String Model, String Frequency, int NumberofCores) {
this.Model = Model;
this.Frequency = Frequency;
this.NumberofCores = NumberofCores;
}
public boolean equals(Object obj) {
CPU c = (CPU) obj;
if (this.Model.equals(c.Model) && this.Frequency.equals(Frequency) && this.NumberofCores == NumberofCores)
return true;
else
return false;
}
public String toString() {
return "CPU:\nModel: " + Model +
"
Frequency: " +Frequency +
"
Number of Cores: " + NumberofCores;
}
}
class Mainboard {//Mainboard
String Model;
public Mainboard(String Model) {
this.Model = Model;
}
public boolean equals(Object obj) {
Mainboard m = (Mainboard) obj;
if (this.Model.equals(m.Model))
return true;
else
return false;
}
public String toString() {
return "
Mainboard:
Model: " + Model;
}
}
class Memory {//Memory
String Model;
int Size;
public Memory(String Model, int Size) {
this.Model = Model;
this.Size = Size;
}
public boolean equals(Object obj) {
Memory m = (Memory) obj;
if (this.Model.equals(m.Model) && this.Size == m.Size)
return true;
else
return false;
}
public String toString() {
return "
Memory:
Model: " + Model +
"
Size: " + Size;
}
}
class Screen {
String Model;
int Size;
public Screen(String Model, int Size) {
this.Model = Model;
this.Size = Size;
}
public boolean equals(Object obj) {
Screen s = (Screen) obj;
if (this.Model.equals(s.Model) && this.Size == s.Size)
return true;
else
return false;
}
public String toString() {
return "
Screen:
Model: " + Model +
"
Size: " + Size;
}
}
class Harddisk {
String Model;
int Size;
public Harddisk(String Model, int Size) {
this.Model = Model;
this.Size = Size;
}
public boolean equals(Object obj) {
Harddisk h = (Harddisk) obj;
if (this.Model.equals(h.Model) && this.Size == h.Size)
return true;
else
return false;
}
public String toString() {
return "
Harddisk:
Model: " + Model +
"
Size: " + Size;
}
}
class Computer {
CPU cpu;
Mainboard mainboard;
Memory memory;
Screen screen;
Harddisk harddisk;
public Computer(String cModel, String cFrequency, int cNumofCores, String mModel, String meModel, int meSize, String sModel, int sSize, String hModel, int hSize) {
cpu = new CPU(cModel, cFrequency, cNumofCores);
mainboard = new Mainboard(mModel);
memory = new Memory(meModel, meSize);
screen = new Screen(sModel, sSize);
harddisk = new Harddisk(hModel, hSize);
}
public CPU getCpu() {
return cpu;
}
public Mainboard getMainboard() {
return mainboard;
}
public Memory getMemory() {
return memory;
}
public Screen getScreen() {
return screen;
}
public Harddisk getHarddisk() {
return harddisk;
}
public boolean equals(Object obj) {
Computer c = (Computer) obj;
if (this.cpu.equals(c.getCpu()) && this.mainboard.equals(c.getMainboard()) && this.memory.equals(c.getMemory())
&& this.screen.equals(c.getScreen()) && this.harddisk.equals(c.getHarddisk()))
return true;
else
return false;
}
public String toString() {
return cpu.toString() + mainboard.toString() + memory.toString() + screen.toString() + harddisk.toString();
}
}