Java常用API练习

前言

这是我从网上看到的例题,拿来写了写,有些部分写的很草率,不是太好,这次的目的是练习常用的API,但是有些我没有用。

目录

题目1

  1. 现已知工人(Worker)类,属性包含姓名(name)、工龄(year),请编写该类,提供构造方法和get、set方法。在测试类中,请查看键盘录入Scanner类的API,创建工人类对象,属性值由键盘录入,打印对象的属性值。输出效果如下:
请录入工人姓名:
张三
请录入工人工龄:
5
该工人对象的属性信息如下:
姓名:张三
工龄:5

代码如下:


public class Worker {
    private String name;
    private int year;

    public Worker() {
    }

    public Worker(String name, int year) {
        this.name = name;
        this.year = year;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public  void show(){
        System.out.println("该工人对象的属性信息如下:");
        System.out.println("姓名:"+getName());
        System.out.println("工龄:"+getYear());
    }
}
    public static void main(String[] args) {
        Worker worker = new Worker();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入工人的姓名:");
        worker.setName(scanner.nextLine());
        System.out.println("请输入工人的工龄:");
        worker.setYear(scanner.nextInt());
        worker.show();


    }

题目2

  1. 在登录注册页面中,除了用户名和密码外,通常也会包含验证码。验证码是用来区分用户是计算机还是人,防止恶意破解密码、刷票、灌水等行为。请查看Random、StringBuilder相关API,定义方法,获取一个包含4个字符的验证码,每一位字符是随机选择的字母和数字,可包含a-z,A-Z,0-9。例如:
7Kt5

代码如下:

public class Test02 {
    public static void main(String[] args) {
        System.out.println(getCheckCode());

    }
    public Test02(){

    }
    public static String getCheckCode(){
        Random random = new Random();
        String randomcode = "";
        StringBuffer stringBuffer = new StringBuffer();
        for(char i = 'a';i < 'z';i++){
            stringBuffer.append(i);
        }

        for(char i = 'A';i < 'Z';i++){
            stringBuffer.append(i);
        }

        for(char i= '0';i <='9';i++){
            stringBuffer.append(i);
        }

        for(int i =0; i < 4;i++){
            randomcode += stringBuffer.charAt(random.nextInt(stringBuffer.length()));

        }
        return randomcode;
    }
}

题目3

  1. 在登录注册页面中,除了用户名和密码外,通常也会包含验证码。验证码是用来区分用户是计算机还是人,防止恶意破解密码、刷票、灌水等行为。在判断验证码时一般不区分大小写。请编写程序模拟验证码的判断过程,如果输入正确,给出提示,结束程序。如果输入错误,给出提示,验证码刷新,重新输入,直至正确为止。

生成4位随机验证码的功能在之前的题目中已经完成,可以直接使用。《定义方法,获取一个包含4个字符的验证码,每一位字符是随机选择的字母和数字,可包含a-z,A-Z,0-9。》
运行效果:

生成的验证码为:BkhD
请输入验证码
abcd
输入错误,请重新输入...
生成的验证码为:n1wX
请输入验证码
aaaa
输入错误,请重新输入...
生成的验证码为:Fm1a
请输入验证码
fm1a
输入正确

代码如下:

public class Test03 {
    public static void main(String[] args) {
		
		while(true){
		    String checkCode = getCheckCode();
			Scanner scanner = new Scanner(System.in);
			System.out.println("此次的验证码为: "+checkCode);
			System.out.println("请输入验证码: ");
			String checkcodeofuserinput = scanner.nextLine();
			int flag = 0;
			for(int i =0;i < 4;i++){
				for(char j = 'a';j < 'z';j++){
					if(checkCode.charAt(i) == j){
						flag ++;
						break;
					}
				}
			
			for(char j = 'A'; j < 'Z';j++){
				if(checkCode.charAt(i) == j){
					flag ++;
					break;
				}
			}
			
			for(char j = '0'; j < '9';j++){
				if(checkCode.charAt(i) == j){
					flag ++;
					break;
				}
			}
			}
			if(flag == 4){
				System.out.println("输入正确");
				System.out.println("生成的验证码为:"+checkCode);
				break;
			}else{
				System.out.println("输入错误,请重新输入...");
			}

			

			

        }
    }
	public static String getCheckCode(){
        Random random = new Random();
        String randomcode = "";
        StringBuffer stringBuffer = new StringBuffer();
        for(char i = 'a';i < 'z';i++){
            stringBuffer.append(i);
        }

        for(char i = 'A';i < 'Z';i++){
            stringBuffer.append(i);
        }

        for(char i= '0';i <='9';i++){
            stringBuffer.append(i);
        }

        for(int i =0; i < 4;i++){
            randomcode += stringBuffer.charAt(random.nextInt(stringBuffer.length()));

        }
        return randomcode;
    }
}

题目4

  1. 请编写程序,由键盘录入一个字符串,统计字符串中英文字母和数字分别有多少个。比如:Hello12345World中字母:10个,数字:5个。

代码如下:

public class Test04 {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		String string = sc.nextLine();
		int string_count = 0;
		int number_count = 0;
		char c =' ';
		for(int i = 0; i < string.length();i++){
			c = string.charAt(i);
			for(char j = 'a';j <'z';j++){
				if( c == j){
                    string_count ++;
                    break;
                }

			}
			for(char j = 'A';j < 'Z';j++){
			    if(c == j) {
                    string_count++;
                    break;
                }
			}
			for(int j = '0';j <='9';j++){
                if( c == j){
                    number_count++;
                    break;
                }
			}
		}
		System.out.println("字母:"+string_count+" 数字: "+number_count);
		
	}
}

题目5

  1. 请定义一个方法用于判断一个字符串是否是对称的字符串,并在主方法中测试方法。例如:“abcba”、"上海自来水来自海上"均为对称字符串。
    代码如下:
public class Test05 {
    public static void main(String[] args) {
		
        System.out.println(isDuiCheng(new Scanner(System.in).nextLine()));
    }
	
	public static boolean isDuiCheng(String string){
        if(string == null) return false;
		int left = 0;
		int right = string.length() - 1;
		if((string.length() & 1) == 1){
			int mid = (string.length() / 2);
			for(int i = 0;i < mid; i++){
				if(string.charAt(i) != string.charAt(right)){
					return false;
				}
				right --;
			}
			//遍历完成,就是对称的了
			return true;
		}
		
		//默认返回的是不对称的
		return false;
	}
}

题目6

  1. 我国的居民身份证号码,由由十七位数字本体码和一位数字校验码组成。请定义方法判断用户输入的身份证号码是否合法,并在主方法中调用方法测试结果。规则为:号码为18位,不能以数字0开头,前17位只可以是数字,最后一位可以是数字或者大写字母X。
    代码如下:
public class Test07 {
    public static void main(String[] args) {
        System.out.println(isId(new Scanner(System.in).nextLine()));
    }
	
	public static boolean isId(String string){
		if(string == null) return false;
		int length = string.length();
		if(length == 18){
			//不是0开头
			if(!string.startsWith("0")){
				char c = string.charAt(string.charAt(length -1));
				if((c >= '0' && c <='9') || c =='X'){
					//其实只有判断16个而已
					for(int i = 1;i< 17;i++){
						if(!(string.charAt(i) >='0' && string.charAt(i) <= '9')){
							return false;
						}
					}
				}
			}
		}else{
            System.out.println("不是18位身份证");
        }
		return false;
		
	}
}

这道题,我并没有测试出来,我输入18位的时候,就报错了,好像不能输入这么多

题目7

  1. 定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。

要求:

​ 1、如果传递的参数为空,返回null

​ 2、如果传递的数组元素个数为0,返回[]

​ 3、如果数组为int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3]
代码如下:

public class Test08 {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3};
        System.out.println(show(arr));
    }

    public static String show(int[] string){
        StringBuffer stringBuffer = new StringBuffer();
        if(string == null) {
            return  null;
        }
        if(string.length == 0) {
            return stringBuffer.append('[').append(']').toString();
        }
        stringBuffer.append('[');
        for(int i =0;i< string.length;i++){
            //最后一次,不用添加逗号
            if(i == string.length -1){
                stringBuffer.append(string[i]);
                break;
            }
            stringBuffer.append(string[i]).append(',');

        }
        stringBuffer.append(']');
        return stringBuffer.toString();
    }
}

题目8

  1. 现有如下文本:“Java语言是面向对象的,Java语言是健壮的,Java语言是安全的,Java是高性能的,Java语言是跨平台的”。请编写程序,统计该文本中"Java"一词出现的次数。
// 查找参数字符串str在调用方法的字符串中第一次出现的索引,如果不存在,返回-1
public int indexOf(String str)

// 截取字符串,从索引beginIndex(包含)开始到字符串的结尾
public String substring(int beginIndex)

代码如下:

public class Test09 {
    public static void main(String[] args) {
        String string = "Java语言是面向对象的,Java语言是健壮的,Java语言是安全的,Java是高性能的,Java语言是跨平台的";
        String target = "Java";
        System.out.println(getJavaAcount(string,target));

    }

    public static int getJavaAcount(String string,String target){
        int account = 0;
        int index = -1;

        while((index = string.indexOf(target)) != -1){
            account++;
            //重点,如果不加上目标字符的长度的话,最终结果会显示一直都是0
            string = string.substring(index + target.length());
        }
        return account;
    }
}

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值