140 - 家电类
Time Limit: 1000 Memory Limit: 65535
Submit: 105 Solved: 69
Description
某大型家电企业拥有一批送货卡车,运送电视机、洗衣机、空调等家电。编程计算每个卡车所装载货物的总重量。要求有一个Appliance(家电)接口和有三个实现类TV、WashMachine和AirConditioner,这些类能够提供自重。有一个Truck类,包含了该货车上的所有家电,用一个集合(数组或集合类)表示。
Main函数中程序能够输出Truck类所装载货物的总重量。
Input
家电数量
家电种类编号 家电重量
注意:各个家电的编号为:TV:1 WashMachine:2 AirConditioner:3
Output
总重量
Sample Input
5
1 20
2 30
3 25
3 30
2 40
Sample Output
145
_____________
import java.util.*;
public class Main{
public static void main(String[] args) {
Truck t=new Truck();
Scanner scan = new Scanner(System.in);
int num= scan.nextInt();
int type;
int weight;
for(int i=0;i<num;i++)
{
type = scan.nextInt();
weight = scan.nextInt();
t.getWeight(weight);
t.sortit(type,weight);
}
t.getSum();
scan.close();
}
}
interface Appliance
{
void setWeight(int b);
}
class Truck{
public int sumweight;
public void getWeight(int a){
this.sumweight+=a;
}
public void sortit(int t,int w) {
if(t==1)
{
TV x=new TV(w);
}
else if(t==2)
{
WashMachine x=new WashMachine(w);
}
else if(t==3)
{
AirConditioner x=new AirConditioner(w);
}
}
public void getSum() {
System.out.println(sumweight);
}
}
class TV implements Appliance
{
int weight;
public TV(int weight) {
this.weight=weight;
}
@Override
public void setWeight(int b) {
// TODO Auto-generated method stub
weight=b;
}
public int getWeight() {
return weight;
}
}
class WashMachine implements Appliance
{
int weight;
public WashMachine(int weight) {
this.weight=weight;
}
@Override
public void setWeight(int b) {
// TODO Auto-generated method stub
weight=b;
}
public int getWeight() {
return weight;
}
}
class AirConditioner implements Appliance
{
int weight;
public AirConditioner(int weight) {
this.weight=weight;
}
@Override
public void setWeight(int b) {
// TODO Auto-generated method stub
weight=b;
}
public int getWeight() {
return weight;
}
}
###########################################
150 - 教师类
Time Limit: 1000 Memory Limit: 65535
Submit: 133 Solved: 60
Description
设计一个教师类Teacher,要求:
属性有编号(int no)、姓名(String name)、年龄(int age)、所属学院(String seminary),为这些属性设置相应的get和set方法。
为Teacher类重写equals方法,要求:当两个教师对象的no相同时返回true。
重写Teacher类的toString方法,通过该方法可以返回“no: **, name:**, age: **, seminary: **”形式的字符串。
Input
两个教师对象的编号,姓名,年龄,学院
Output
教师的信息
两个教师是否相等
Sample Input
1 Linda 38 SoftwareEngineering
2 Mindy 27 ComputerScience
Sample Output
no: 1, name:Linda, age: 38, seminary: SoftwareEngineering
no: 2, name:Mindy, age: 27, seminary: ComputerScience
false
______________________
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int no1=scan.nextInt();
String name1=scan.next();
int age1=scan.nextInt();
String seminary1=scan.next();
Teacher t1=new Teacher(no1,name1,age1,seminary1);
int no2=scan.nextInt();
String name2=scan.next();
int age2=scan.nextInt();
String seminary2=scan.next();
Teacher t2=new Teacher(no2,name2,age2,seminary2);
System.out.println(t1);
System.out.println(t2);
System.out.println(t1.equals(t2));
scan.close();
}
}
class Teacher{
int no;
String name;
int age;
String seminary;
public Teacher(int no,String name,int age,String seminary) {
this.no=no;
this.name=name;
this.age=age;
this.seminary=seminary;
}
int getNo() {return no;}
String getName() {return name;}
int getAge() {return age;}
String getSeminary() {return seminary;}
void setNo(int n) {no=n;}
void setName(String na) {name=na;}
void setAge(int a) {age=a;}
void setSeminary(String s) {seminary=s;}
public boolean equals(Object o) {
if (o == null) return false;
else {
boolean result = false;
if (o instanceof Teacher) {
Teacher rec = (Teacher) o;
if (this.no == rec.no) {
result = true;
}
}
return result;
}
}
public String toString() {
return "no: "+no+", name:"+name+", age: "+age+", seminary: "+seminary;
}
}
###############################
149 - 教师类-2
Time Limit: 1000 Memory Limit: 65535
Submit: 141 Solved: 53
Description
修改题目143
1. 修改教师类,使得由多个Teacher对象所形成的数组可以排序(编号由低到高排序),并在main函数中使用Arrays.sort(Object[] a)方法排序
2. 定义一个类TeacherManagement,包含教师数组,提供方法add(Teacher[]),使其可以添加教师,提供重载方法search,方法可以在一组给定的教师中,根据姓名或年龄返回等于指定姓名或年龄的教师的字符串信息,信息格式为:“no: **, name:**, age: **, seminary: **”。如果没有满足条件的教师,则返回“no such teacher”。
Input
教师个数
教师信息
待查找教师的姓名
待查找教师的年龄
Output
排序后的信息
按姓名查找的老师信息
按年龄查找的老师信息
Sample Input
4
3 Linda 38 SoftwareEngineering
1 Mindy 27 ComputerScience
4 Cindy 28 SoftwareEngineering
2 Melody 27 ComputerScience
Cindy
27
Sample Output
no: 1, name: Mindy, age: 27, seminary: ComputerScience
no: 2, name: Melody, age: 27, seminary: ComputerScience
no: 3, name: Linda, age: 38, seminary: SoftwareEngineering
no: 4, name: Cindy, age: 28, seminary: SoftwareEngineering
search by name:
no: 4, name: Cindy, age: 28, seminary: SoftwareEngineering
search by age:
no: 1, name: Mindy, age: 27, seminary: ComputerScience
no: 2, name: Melody, age: 27, seminary: ComputerScience
____________________________________________
import java.lang.reflect.Array;
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num=scan.nextInt();
TeacherManagement tt=new TeacherManagement(num);
Teacher[] t=new Teacher[num];
for(int i=0;i<num;i++) {
int no=scan.nextInt();
String name=scan.next();
int age=scan.nextInt();
String seminary=scan.next();
t[i] = new Teacher(no,name,age,seminary);
}
tt.add(t);
Arrays.sort(t);
for(int i=0;i<num;i++) {
System.out.println(t[i].toString());
}
String namejuge=scan.next();
tt.search(namejuge);
int agejuge=scan.nextInt();
tt.search(agejuge);
scan.close();
}
}
class Teacher implements Comparable<Teacher>{
int no;
String name;
int age;
String seminary;
public Teacher(int no,String name,int age,String seminary) {
this.no=no;
this.name=name;
this.age=age;
this.seminary=seminary;
}
int getNo() {return no;}
String getName() {return name;}
int getAge() {return age;}
String getSeminary() {return seminary;}
void setNo(int n) {no=n;}
void setName(String na) {name=na;}
void setAge(int a) {age=a;}
void setSeminary(String s) {seminary=s;}
/* public boolean equals(Object o) {
if (o == null) return false;
else {
boolean result = false;
if (o instanceof Teacher) {
Teacher rec = (Teacher) o;
if (this.no == rec.no) {
result = true;
}
}
return result;
}
}*/
public String toString() {
return "no: "+no+", name: "+name+", age: "+age+", seminary: "+seminary;
}
public int compareTo(Teacher t) {
if(this.no<t.no)
return -1;
else if(this.no==t.no)
return 0;
else return 1;
}
}
class TeacherManagement{
int num;
Teacher[] t;
public TeacherManagement(int num) {
this.num=num;
this.t=new Teacher[num];
}
void add(Teacher[] t) {
this.t=t;
}
void search(int age){
int f=0;
System.out.println("search by age:");
for (Teacher tt : t) {
if (tt.age == age) {
f=1;
System.out.println(tt.toString());
}
}
if(f==0){
System.out.println("no such teacher");
}
}
void search(String name){
int f=0;
System.out.println("search by name:");
for (Teacher tt : t) {
if (tt.name.equals(name)) {
f=1;
System.out.println(tt.toString());
}
}
if(f==0){
System.out.println("no such teacher");
}
}
}
###################################
142 - 计算机类
Time Limit: 1000 Memory Limit: 65535
Submit: 100 Solved: 49
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)
____________________________________
import java.lang.reflect.Array;
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String CPUmodel=scan.next();
String frequency=scan.next();
int cores = scan.nextInt();
CPU cpu1= new CPU(CPUmodel,frequency,cores);
String MainboardModel = scan.next();
Mainboard mainboard1 = new Mainboard(MainboardModel);
String MemoryModel = scan.next();
int MemorySize = scan.nextInt();
Memory memory1 = new Memory(MemoryModel,MemorySize);
String ScreenModel = scan.next();
int ScreenSize = scan.nextInt();
Screen screen1 = new Screen(ScreenModel,ScreenSize);
String HdModel = scan.next();
int HdSize = scan.nextInt();
HD hd1 = new HD(HdModel,HdSize);
ALLMachine machine1=new ALLMachine(cpu1,mainboard1,memory1,screen1,hd1);
String CPUmodel2=scan.next();
String frequency2=scan.next();
int cores2 = scan.nextInt();
CPU cpu2= new CPU(CPUmodel2,frequency2,cores2);
String MainboardModel2 = scan.next();
Mainboard mainboard2 = new Mainboard(MainboardModel2);
String MemoryModel2 = scan.next();
int MemorySize2= scan.nextInt();
Memory memory2 = new Memory(MemoryModel2,MemorySize2);
String ScreenModel2 = scan.next();
int ScreenSize2 = scan.nextInt();
Screen screen2 = new Screen(ScreenModel2,ScreenSize2);
String HdModel2 = scan.next();
int HdSize2 = scan.nextInt();
HD hd2 = new HD(HdModel2,HdSize2);
ALLMachine machine2=new ALLMachine(cpu2,mainboard2,memory2,screen2,hd2);
System.out.println(machine1.equals(machine2));
System.out.println("Computer1:");
System.out.print(machine1.toString());
System.out.println("Computer2:");
System.out.print(machine2.toString());
scan.close();
}
}
class Computer{
String model;
public Computer(String model) {
this.model=model;
}
void getPrice() {}
}
class CPU extends Computer{
String frequency;
int cores;
public CPU(String model,String frequency,int cores) {
super(model);
this.frequency=frequency;
this.cores=cores;
}
public boolean equals(Object o) {
if (o == null) return false;
else {
boolean result = false;
if (o instanceof CPU) {
CPU rec = (CPU) o;
if (this.model.equals(rec.model) && this.frequency.equals(rec.frequency)&&this.cores==rec.cores) {
result = true;
}
}
return result;
}
}
public String toString() {
return "CPU:"+'\n'+"Model: "+model+'\n'+"Frequency: "+frequency+'\n'+"Number of Cores: "+cores+'\n';
}
}
class Mainboard extends Computer{
public Mainboard(String model) {
super(model);
}
public String toString() {
return "Mainboard:"+'\n'+"Model: "+model+'\n';
}
public boolean equals(Object o) {
if (o == null) return false;
else {
boolean result = false;
if (o instanceof Mainboard) {
Mainboard rec = (Mainboard) o;
if (this.model.equals(rec.model)) {
result = true;
}
}
return result;
}
}
}
class Memory extends Computer{
int size;
public Memory(String model,int size) {
super(model);
this.size=size;
}
public String toString() {
return "Memory:"+'\n'+"Model: "+model+'\n'+"Size: "+size+'\n';
}
public boolean equals(Object o) {
if (o == null) return false;
else {
boolean result = false;
if (o instanceof Memory) {
Memory rec = (Memory) o;
if (this.model.equals(rec.model)&&this.size==rec.size) {
result = true;
}
}
return result;
}
}
}
class Screen extends Computer{
int size;
public Screen(String model,int size) {
super(model);
this.size=size;
}
public String toString() {
return "Screen:"+'\n'+"Model: "+model+'\n'+"Size: "+size+'\n';
}
public boolean equals(Object o) {
if (o == null) return false;
else {
boolean result = false;
if (o instanceof Screen) {
Screen rec = (Screen) o;
if (this.model.equals(rec.model)&&this.size==rec.size) {
result = true;
}
}
return result;
}
}
}
class HD extends Computer{
int size;
public HD(String model,int size) {
super(model);
this.size=size;
}
public String toString() {
return "Harddisk:"+'\n'+"Model: "+model+'\n'+"Size: "+size+'\n';
}
public boolean equals(Object o) {
if (o == null) return false;
else {
boolean result = false;
if (o instanceof HD) {
HD rec = (HD) o;
if (this.model.equals(rec.model)&&this.size==rec.size) {
result = true;
}
}
return result;
}
}
}
class ALLMachine{
CPU cpu;
Mainboard mainboard;
Memory memory;
Screen screen;
HD hd;
ALLMachine(CPU cpu,Mainboard mainboard,Memory memory,Screen screen,HD hd){
this.cpu = cpu;
this.mainboard = mainboard;
this.memory = memory;
this.screen = screen;
this.hd= hd;
}
public boolean equals(Object o){
if(o==null) return false;
else if(o instanceof ALLMachine){
ALLMachine c = (ALLMachine) o;
return this.cpu.equals(c.cpu) && this.mainboard.equals(c.mainboard) && this.memory.equals(c.memory) && this.screen.equals(c.screen) && this.hd.equals(c.hd);
}
else
return false;
}
public String toString() {
return cpu.toString() + mainboard.toString() + memory.toString() + screen.toString() + hd.toString();
}
}
#############################################
139 - 整数数组比较
Time Limit: 1000 Memory Limit: 65535
Submit: 82 Solved: 57
Description
给定两个整型数组A和B,将A的元素复制到B中,使得两个数组完全相同。再将B数组从小到大排列,将两数组的同一位置上对应的元素进行比较,统计出A中大于B的元素个数,等于B中元素的个数,小于B中的元素的个数。
Input
数组A的个数
数组A元素
Output
A大于B的个数
A等于B的个数
A小于B的个数
Sample Input
10
23 1 32 87 65 12 21 9 76 45
Sample Output
4
1
5
HINT
可用Arrays.sort排序
______________________________
import java.lang.reflect.Array;
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num=scan.nextInt();
int[] A=new int[num];
for(int i=0;i<num;i++) {
A[i]=scan.nextInt();
}
int[] B=A.clone();
Arrays.sort(B);
int x=0,y=0,z=0;
for(int i=0;i<num;i++) {
if(A[i]>B[i]) {
x++;
}
else if(A[i]==B[i]) {
y++;
}
else z++;
}
System.out.println(x);
System.out.println(y);
System.out.println(z);
scan.close();
}
}
####################################
151 - 矩阵类
Time Limit: 1000 Memory Limit: 65535
Submit: 109 Solved: 44
Description
利用二维数组(double[])实现一个矩阵类:Matrix。要求提供以下方法:(1)set(int row, int col, double value):将第row行第col列的元素赋值为value;(2)get(int row,int col):取第row行第col列的元素;(3)width():返回矩阵的列数;(4)height():返回矩阵的行数;(5)Matrix add(Matrix b):返回当前矩阵与矩阵b相加后的矩阵;(6)Matrix multiply(Matrix b):返回当前矩阵与矩阵b相乘后的矩阵。(7)Matrix transpose():返回当前矩阵的转置矩阵;(8)toString():以行和列的形式打印出当前矩阵。
Input
矩阵的行列数
矩阵的数据
设置矩阵值的行、列和值
获取矩阵值的行、列
待相加矩阵的行列数
待相加矩阵的值
待相乘矩阵的行列数
待相乘矩阵的值
Output
矩阵的行、列数
设置矩阵值后的矩阵
某行某列的矩阵值
矩阵相加结果
矩阵相乘结果
矩阵转置结果
Sample Input
3 3
1 2 3
4 5 6
7 8 9
2 3 8
1 3
3 3
1 2 3
4 5 6
7 8 9
3 2
1 2
1 2
1 2
Sample Output
row:3 column:3
after set value:
1 2 3
4 5 8
7 8 9
value on (1,3):3
after add:
2 4 6
8 10 14
14 16 18
after multiply:
6 12
17 34
24 48
aftesr transpose:
1 4 7
2 5 8
3 8 9
_________________________
import java.lang.reflect.Array;
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int row=scan.nextInt();
int col=scan.nextInt();
Matrix x=new Matrix(row,col);
for(int i=0;i<row;i++) {
for(int j=0;j<col;j++) {
double value=scan.nextDouble();
x.set(i,j,value);
}
}
System.out.println("row:"+row+" column:"+col);
int whererow=scan.nextInt();
int wherecol=scan.nextInt();
double wherenumber=scan.nextDouble();
x.set(whererow-1, wherecol-1, wherenumber);
int searchrow=scan.nextInt();
int searchcol=scan.nextInt();
System.out.println("after set value:");
System.out.println(x);
System.out.println("value on ("+searchrow+","+searchcol+"):"+(int)x.get(searchrow-1, searchcol-1));
int addrow=scan.nextInt();
int addcol=scan.nextInt();
Matrix y=new Matrix(addrow,addcol);
for(int i=0;i<addrow;i++) {
for(int j=0;j<addcol;j++) {
double value=scan.nextDouble();
y.set(i,j,value);
}
}
System.out.println(y.add(x));
int multirow=scan.nextInt();
int multicol=scan.nextInt();
Matrix z=new Matrix(multirow,multicol);
for(int i=0;i<multirow;i++) {
for(int j=0;j<multicol;j++) {
double value=scan.nextDouble();
z.set(i,j,value);
}
}
System.out.println(x.multiply(z));
System.out.println(x.transpose());
scan.close();
}
}
class Matrix{
int row;
int col;
double matrix[][];
public Matrix(int row,int col) {
this.row=row;
this.col=col;
this.matrix=new double[row][col];
}
void set(int row, int col, double value){
matrix[row][col]=value;
}
double get(int row,int col) {
return this.matrix[row][col];
}
int width() {
return col;
}
int height() {
return row;
}
Matrix add(Matrix b){
System.out.println("after add:");
for(int i=0;i<b.row;i++) {
for(int j=0;j<b.col;j++) {
this.matrix[i][j]+=b.matrix[i][j];
}
}
return this;
}
Matrix multiply(Matrix b){
System.out.println("after multiply:");
Matrix c=new Matrix(this.row,b.col);
for(int i=0;i<this.row;i++) {
for(int j=0;j<b.col;j++) {
double t=0;
for(int k=0;k<this.col;k++) {
t+=this.matrix[i][k]*b.matrix[k][j];
}
c.set(i, j, t);
}
}
return c;
}
Matrix transpose() {
System.out.println("after transpose:");
for(int i=0;i<this.row;i++) {
for(int j=0;j<i;j++) {
double t=this.matrix[i][j];
this.matrix[i][j]=this.matrix[j][i];
this.matrix[j][i]=t;
}
}
return this;
}
public String toString() {
String t="";
for(int i=0;i<this.row;i++) {
for(int j=0;j<this.col;j++) {
if(j!=0) t+=" ";
t+=(int)(this.matrix[i][j]);
}
if(i!=row-1)
t+="\n";
}
return t;
}
}
####################################################