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);
    

感觉还有很多可以优化,当时写的比较急促,哎~~~~~~~
第二,三题其实做法有很多。。。。


  1. a-zA-Z ↩︎

以上是关于JavaMidExam的主要内容,如果未能解决你的问题,请参考以下文章

ShaderLab-坐标转换

ShaderLab-坐标转换

机器人学——机器人位置运动学

Shader学习笔记_基础知识_分量

Opengl_07_插值

求解Haversine公式的分量时,sympy挂起[重复]