大学java期中考试题目以及自己的解答

1、 按以下要求,编写一个商品类。(40分)

(1)该类包括商品编号、商品名称两个属性,权限为私有;

(2)该类有两个构造方法,一个为无参构造方法,一个为包含两个参数的构 造方法,分别对商品编号和商品名称进行初始化;

(3)为这两个属性提供set和get函数,用于设置和获取相应属性;

(4)重写equals方法,当两个商品编号相同时,认为是同一个商品;

(5)在测试类创建两个商品对象,一个对象调用带参的构造方法初始化,一个对象调用无参的构造方法初始化,再调用set函数赋值;比较这两个商品是不是同一商品, 并输出比较结果。

public class Shop {
    private int number;
    private String name;
Shop(){

}
    Shop(int number ,String name){/初始化商品属性
        this.name=name;
        this.number=number;
    }
    void setname(String name){
        this.name=name;
    }
    public void setNumber(int number) {//设置number
        this.number = number;
    }
    boolean equals(int number2)//对不同商品比较,返回是或否
    {
        return(this.number==number2);
    }
    public String getName() {//获取name
        return name;
    }
    public int getNumber() {//获取number
        return number;
    }

}public class ShopMain {
    public static void main(String[] args) {
        Shop shop1=new Shop(100, "shop1");
        Shop shop2=new Shop();
        shop2.setNumber(200);
        shop2.setname("shop2");
        if(shop1.equals(shop2.getNumber())){
            System.out.println("这两个商品相同");
        }else{
            System.out.println("这两个商品不一样");
        }
    }
}

2、 按以下要求编写程序:(30分)

现要开发一个文件传输系统,由于安全性的需要,传输的文件需要先进行加密(接口函数可以设计为void fileEncrypt(File f);),不同的用户可能会使用不同的加密算法(比如:RSA加密算法,DES加密算法),以后还可能会使用新的加密算法,请设计系统的加密模块,要求其能灵活支持不同的加密算法,也能尽量少的改动代码就可以适用于新的加密算法。设计测试类,生成相应对象进行测试。(提示:具体的加密算法实现可以用打印一句话来模拟)

import java.io.File;

public  interface ASystem {设计接口

    public  abstract void fileEncrypt(File f);//接口的加密函数
}

import java.io.File;

public class SystemOne implements ASystem {实现接口

    @Override
    public void fileEncrypt(File f) {//实现接口方法
        // TODO Auto-generated method stub
        System.out.println("已用一加密算法加密");
    }
    
}

import java.io.File;

public class SystemMain {
    public static void main(String[] args) {
        ASystem systemone=new Systemone();
        systemone.fileEncrypt(new File("uri"));//对文件进行加密
    }
}

3、按以下要求编写程序:(30分)

解析字符串,设计测试类Test1,输入一个字符串,字符串中有用户名,密码,日期三个分量组成,用&&分开,例如:zhangsan&&abc123&&2021/10/01(测试数据用户名为学生自己姓名的拼音)。

(1)请从字符串中提取用户名,密码和日期,并分别打印,比如:用户名为zhangsan,密码为abc123,日期为2021/10/01;(字符串分割)

(2)判断密码是否满足规则并输出判断结果:密码由英文字母和数字组成,长度大于等于6,小于等于20;(提示:字符串匹配,该规则的正则表达式为:[a-zA-Z|0-9]{6,20}

 

(3)统计该串中共出现多少个英文字母;(大小写都算)

(4)转换日期格式为2021-10-01,并输出。(字符串替换)

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        String name = "zhangsan&&abc123&&2021/10/01";// 测试用例
        // Scanner scanner=new Scanner(System.in);//可开启输入功能
        // name=scanner.nextLine();
        String[] word = new String[3];
        word = name.split("&&");// 对输入信息进行切割
        System.out.println("用户名是" + word[0]);
        System.out.println("密码是" + word[1]);
        System.out.println("日期是" + word[2]);
        String regex = "[a-zA-Z|0-9]{6,20}";
        boolean match = word[1].matches(regex);// 对该字符串进行正则匹配
        if (match) {
            System.out.println("合法密码");
        } else {
            System.out.println("非法密码");
        }
        int number = 0;
        for (int i = 0; i < name.length(); i++) {//对该字符串进行字母数累加
            if (name.charAt(i) >= 'a' && name.charAt(i) <= 'z')
                number++;
            else if (name.charAt(i) >= 'A' && name.charAt(i) <= 'Z')
                number++;
        }
        System.out.println("共出现" + number + "个英文字母");
        
        StringBuffer time = new StringBuffer(word[2]);//将string 转换为stringbuffer,有利于使用replace
        for (int i = 0; i < time.length(); i++) {
            if (time.charAt(i) == '/') {
                time.replace(i, i + 1, "-");
            }
        }
        System.out.println(time);
        // scanner.close();//输入功能关闭
    }
}

 

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值