JAVA中的两道测试题

    技术2022-07-10  87

    第一道题:

    编写程序模拟用户注册: 1、程序开始执行时,提示用户输入“用户名”和“密码”信息 2、输入信息之后,后台java程序模拟用户注册 3、注册时用户名要求长度在【6,14】之间,小于或者大于都表示异常

    注意:完成注册的方法放到一个单独的类中,异常类自定义即可

    class UserService}{ public void register(String username, String password){ //在这个方法中完成注册! } } 编写main方法,在main方法中接收用户输入的信息,在main方法中调用UserService的register方法完成注册

    public class UserRegistry { public static void main(String[] args) { UserService userService = new UserService(); try { userService.register("flyingBird", "979838508"); userService.register("flyingBird", "979838508"); userService.register("flyingBird", "979838508"); //异常中止了继续往下运行 userService.register("flyingBird", "979838508"); } catch (registerException e) { e.printStackTrace(); // System.out.println(e.getMessage()); } } } class UserService { String[] name = new String[2]; String[] pass = new String[2]; public void register(String username, String password) throws registerException { //获取用户名和密码的长度 int nameLength = username.length(); int passwordLength = password.length(); // if (username == null || password == null){ throw new registerException("输入用户名或密码为空。"); } //用户名和密码长度设限 if (nameLength < 6 || nameLength > 14 ){ throw new registerException("用户名长度不符合规范,长度应为6~14个字符"); } if (passwordLength < 8 || passwordLength > 16){ throw new registerException("密码长度不符合规范,长度应为8~16个字符"); } for (int i = 0; i < name.length; i++) { if (name[i] == null && pass[i] == null){ name[i] = username; pass[i] = password; System.out.println("注册成功!"); return; } } throw new registerException("注册用户已达最大值,无法继续注册。"); } } class registerException extends Exception{ public registerException(){ } public registerException(String s) { super(s); } //其父类Throwable中的message = s,而getMessage()方法就是 return message; }

    第二道题:

    开放型题目: 1、写一个类Army,代表一个军队,这个类有一个属性Weapon数组w(用来存储该军队所拥有的所有武器),该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的武器的最大值,并用这个大小来初始化数组w。

    2、该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的的武器加入到数组w中。在这个类中还定义两个方法attackAll()让w数组中的所有武器攻击(System输出语句);以及moveAll()让w数组中的所有可移动的武器移动(System输出语句)。

    写一个主方法测试以上程序。

    提示:Weapon是一个父类,应该有很多子武器。这些子武器应该有一些是可移动的,有一些是可攻击的

    public class ArmyManager { //测试类 public static void main(String[] args) { //创建军队对象 Army army = new Army(3); //军队只有3个武器 //创建武器对象 Weapon italianGun = new ItalianGun(); Weapon plane = new Plane(); Weapon tank = new Tank(); try { //添加武器 army.addWeapon(italianGun); army.addWeapon(plane); army.addWeapon(tank); //此时武器数组已经爆满,无法再添加武器 army.addWeapon(italianGun); } catch (IllegalInputException | ArrayIndexOutOfBoundsException e) { // e.printStackTrace(); System.out.println(e.getMessage()); } army.attackAll(); System.out.println("================武器攻击调用完成================="); army.moveAll(); } } //运行结果: test.ArmyManager.ItalianGun@5b6f7412:武器填装完成 test.ArmyManager.Plane@27973e9b:武器填装完成 test.ArmyManager.Tank@312b1dae:武器填装完成 武器仓库爆了!!! 二营长!开炮! 坦克开炮! ================武器攻击调用完成================= 飞机会飞,但不会打飞机 坦克漂移!

    Army类:

    public class Army extends Weapon{ Weapon[] w; int maxOfWeapon; int index = 0; public Army(){ } public Army(int maxOfWeapon) { this.maxOfWeapon = maxOfWeapon; this.w = new Weapon[maxOfWeapon]; } public void addWeapon(Weapon aw) throws IllegalInputException, ArrayIndexOutOfBoundsException{ if (aw == null){ throw new IllegalInputException("输入异常!!!"); } if (index >= maxOfWeapon){ throw new ArrayIndexOutOfBoundsException("武器仓库爆了!!!"); } w[index] = aw; System.out.println(aw + ":武器填装完成"); index++; } public void attackAll(){ for (int i = 0; i < w.length; i++) { if (w[i] instanceof Attackable){ Attackable attackable = (Attackable)w[i]; attackable.attack(); } } } public void moveAll(){ for (int i = 0; i < w.length; i++) { if (w[i] instanceof Moveable){ Moveable moveable = (Moveable)w[i]; moveable.move(); } } } }

    定义Weapon这个总的父类:

    //定义一个Weapon父类 public class Weapon { }

    定义两个接口:

    //将两个动作定义为接口 interface Attackable { void attack(); } interface Moveable { void move(); }

    各个子武器继承武器这个父类:

    public class ItalianGun extends Weapon implements Attackable{ @Override public void attack() { System.out.println("二营长!开炮!"); } } public class Plane extends Weapon implements Moveable{ @Override public void move() { System.out.println("飞机会飞,但不会打飞机"); } } public class Tank extends Weapon implements Moveable, Attackable{ @Override public void attack() { System.out.println("坦克开炮!"); } @Override public void move() { System.out.println("坦克漂移!"); } }
    Processed: 0.033, SQL: 9