JavaMidExam
Posted 咳咳n
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaMidExam相关的知识,希望对你有一定的参考价值。
JavaMidExam
1.按以下要求编写程序:(30分)
(1) 定义一个坐标点类Point,包含两个成员变量横坐标x和纵坐标y,构造方法对x,y进行初始化;创建一个线段类,添加point1和point2两个成员变量(线段的两个端点),构造方法对其进行初始化。
(2) 在线段类中添加方法:设置两个点的位置以及计算线段的长度。
(3) 设计测试类进行测试,设置线段两个端点的位置,输出两个端点的坐标和线段的长度。(测试数据point1为(2,0),point2为(1,学号后两位))
package TestAll.MidExam;
/**
* @author JMChen
* @date 2020/5/9
*/
/**
* 坐标类
*/
class Point
public double x, y;
public Point(double x, double y)
this.x = x;
this.y = y;
/**
* 线段类
*/
class Line
public Point point1, point2;
//构造函数初始化
public Line(Point a, Point b)
point1 = a;
point2 = b;
//设置两个点的位置
public Point setPoint1(double x, double y)
point1.x = x;
point1.y = y;
return point1;
public Point setPoint2(double x, double y)
point2.x = x;
point2.y = y;
return point2;
//计算线段长度
public double getLength()
double len;
len = Math.sqrt((point1.x - point2.x) * (point1.x - point2.x) + (point1.y - point2.y) * (point1.y - point2.y));
return len;
public class MainTestOne
public static void main(String[] args)
//设置两个点的坐标
Point point1 = new Point(2, 0);
Point point2 = new Point(1, 5);
//打印出坐标信息
System.out.println("point1的坐标是:" + "(" + point1.x + "," + point1.y + ")");
System.out.println("point2的坐标是:" + "(" + point2.x + "," + point2.y + ")");
//初始化线段端点坐标
Line line = new Line(point1, point2);
//打印线段长度
System.out.printf("线段line的长度是:%.2f", line.getLength());
2. 按以下要求编写程序:(30分)
现在要开发一个应用,模拟移动存储设备的读和写功能,即计算机与U盘、MP3、移动硬盘等移动设备进行数据交换。
要求:已知现在要实现计算机对U盘、MP3播放器、移动硬盘这三种移动存储设备的读和写功能,以后可能会有新的第三方的移动存储设备,所以计算机必须有扩展性,能与目前未知而以后可能会出现的存储设备进行数据交换。
package TestAll.MidExam;
/**
* @author JMChen
* @date 2020/5/9
*/
/**定义抽象类存储设备类,包含读写抽象方法*/
abstract class Storage
public abstract void read();
public abstract void write();
/**定义U盘类继承自Storage*/
class UDisk extends Storage
//实现U盘的读操作
public void read()
System.out.println("计算机正在使用U盘做读操作");
//实现U盘的写操作
public void write()
System.out.println("计算机正在使用U盘做写操作");
/**定义MP3类继承自Storage*/
class MP3 extends Storage
//实现MP3的读操作
public void read()
System.out.println("计算机正在使用MP3做读操作");
//实现MP3的写操作
public void write()
System.out.println("计算机正在使用MP3做写操作");
/**定义移动硬盘类继承自Storage*/
class MobileHardDisk extends Storage
实现移动硬盘的读操作
public void read()
System.out.println("计算机正在使用移动硬盘做读操作");
实现移动硬盘的写操作
public void write()
System.out.println("计算机正在使用移动硬盘做写操作");
/**定义计算机类*/
class Computer
//定义Storage类型的成员
public Storage Device;
public void useDevice(Storage Device)
this.Device = Device;
public void show()
Device.read();
Device.write();
public class MainTestTwo
public static void main(String args[])
Computer computer = new Computer();
//使用U盘
Storage storage = new UDisk();
computer.useDevice(storage);
computer.show();
//使用MP3
storage =new MP3();
computer.useDevice(storage);
computer.show();
//使用移动硬盘
storage =new MobileHardDisk();
computer.useDevice(storage);
computer.show();
3. 按以下要求编写程序:(40分)
输入一个字符串,字符串中有用户名,密码,日期三个分量组成,用&&分开,例如:username=chen && password=12345 && date=2009/10/21
分量内部不能有空格比如:username=chen中不能有空格,分量间可以有任意多的空格。
(1)请从字符串中提取用户名,密码和日期,并分别打印,比如:
String name=“chen”
String passwd=“12345”
String datetime=“2009/10/21”
(2)判断用户名是否满足规则:由英文字母开头,英文字母和数字组成
(提示:该规则的正则表达式为:1[a-zA-Z0-9]*$)
(3)判断密码是否满足规则:由数字组成,长度大于等于6,小于等于20
(提示:该规则的正则表达式为:[0-9]6,20)
(4)转换日期格式为2009-10-21
package TestAll.MidExam;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author JMChen
* @date 2020/5/9
*/
public class MainTestThree
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
String str = sc.nextLine();
char[] charmassage = str.toCharArray();
String[] massage = new String[3];//将提取得信息放在一个字符串数组
int i = 0,j =0 ;
//提取信息
for (j = 0; j < charmassage.length; j++)
if (charmassage[j] == '=')
int s = j;
while (s < (str.length()) && charmassage[s] != ' ') s++;
massage[i] = str.substring(j + 1, s);
System.out.println(massage[i]);
i++;
//判断用户名是否符合规则
String regex = "^[a-zA-Z][a-zA-Z0-9]*$"; //按这个规则匹配
Pattern p = Pattern.compile(regex); //匹配的模式
Matcher m = p.matcher(massage[0]); //传入要匹配的原串
if (m.find())
System.out.println(m.group() + "用户名符合规则");
else System.out.println("用户名不符合规则");
//判断密码是否符合规则
String regex2 = "[0-9]6,20"; //按这个规则匹配
p = Pattern.compile(regex2); //匹配的模式
m = p.matcher(massage[1]); //传入要匹配的原串
if (m.find())
System.out.println("密码符合规则");
else System.out.println("密码不符合规则");
//格式化时间
String time = massage[2].replaceAll("/", "-");
System.out.println(time);
感觉还有很多可以优化,当时写的比较急促,哎~~~~~~~
第二,三题其实做法有很多。。。。
a-zA-Z ↩︎
以上是关于JavaMidExam的主要内容,如果未能解决你的问题,请参考以下文章