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();//输入功能关闭
}
}