学习java随堂练习-20220621

今天是学习Java的第十六天
5道练习题

第1题

题目:

1、定义一个方法,获取传入的邮箱地址的用户名
public String getUsername(String email)

运行结果:

请添加图片描述

代码如下:

/**
 * 定义一个方法,获取传入的邮箱地址的用户名 
 * */

package work1;

import java.util.Scanner;

public class eMail {
	private String email;

	public String getUsername() {
		return this.email.substring(0, this.email.indexOf('@'));
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public static void main(String[] args) {
		eMail e = new eMail();
		Scanner input = new Scanner(System.in);
		System.out.print("请输入邮箱地址:");
		e.setEmail(input.next());
		System.out.print("此邮箱的用户名是:");
		System.out.println(e.getUsername());
		;
	}
}

第2题

题目:

2、检查SSN
在这里插入图片描述

运行结果:

请添加图片描述

请添加图片描述

代码如下:

/**
 * 2、检查SSN
 * */
package work2;

import java.util.Scanner;

public class SSN {
	private String SSN;

	public String getSSN() {
		return SSN;
	}

	public void setSSN(String sSN) {
		SSN = sSN;
	}

	public boolean checkSSN() {
		String[] str = SSN.split("-");

		if (str[0].length() != 3 || str[1].length() != 2 || str[2].length() != 4) {
			return false;
		} else {
			for (int i = 0; i < str.length; i++) {
				for (int j = 0; j < str[i].length(); j++) {
					if (str[i].charAt(j) < '0' || str[i].charAt(j) > '9') {
						return false;
					}
				}
			}
		}
		return true;
	}

	public static void main(String[] args) {
		SSN s = new SSN();
		Scanner input = new Scanner(System.in);
		System.out.print("Enter a SSN:");
		String s2 = input.next();
		s.setSSN(s2);
		if (s.checkSSN()) {
			System.out.println(s2 + " is an valid social security number");
		} else {
			System.out.println(s2 + " is an invalid social security number");
		}

	}
}

第3题

题目:

3、验证
定义一个方法进行登录验证,传入用户名,密码
验证规则:public boolean vertify(String name ,String pwd){}
1、用户名忽略大小写
2、密码长度至少6位,只能包含字母和数字

运行结果:

请添加图片描述

请添加图片描述

请添加图片描述

代码如下:

/**
 * 3、验证
 * */
package work3;

import java.util.Scanner;

public class LoginAuthentication {
	private String username = "admin";
	private String password = "abc123";

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public boolean vertify(String name, String pwd) {
		boolean flag1 = this.getUsername().equalsIgnoreCase(name);
		boolean flag2 = pwd.length() >= 6;
		boolean flag3 = true;
		boolean flag4 = this.getPassword().equals(pwd);

		char[] copy = pwd.toCharArray();
		for (int i = 0; i < copy.length; i++) {
			if ((copy[i] >= '0' && copy[i] <= '9') || (copy[i] >= 'A' && copy[i] <= 'Z')
					|| (copy[i] >= 'a' && copy[i] <= 'z')) {
			} else {
				flag3 = false;
			}
		}
		if (flag1 && flag2 && flag3 && flag4) {
			return true;
		} else {
			return false;
		}

	}

	public static void main(String[] args) {
		LoginAuthentication lo = new LoginAuthentication();
		System.out.println("登录验证测试,(默认用户名:admin,默认密码:abc123)");
		Scanner input = new Scanner(System.in);
		System.out.print("请输入用户名:");
		String name = input.next();
		System.out.print("请输入密码:");
		String pwd = input.next();
		if (lo.vertify(name, pwd)) {
			System.out.println("登录成功");
		} else {
			System.out.println("登录失败");
		}

	}

}

第4题

题目:

4、统计字符出现次数的方法

运行结果:

请添加图片描述

代码如下:

/**
 * 4、统计字符出现次数的方法  
 * */
package work4;

import java.util.Scanner;

public class Statistics {
	private String str;// 输入的字符串
	private String str2;// 输入的要查找的字符

	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		this.str = str;
	}

	public String getStr2() {
		return str2;
	}

	public void setStr2(String str2) {
		this.str2 = str2;
	}

	public int seekStr(String str2) {
		int len = str.length();
		int count = 0;
		char[] a = str2.toCharArray();
		for (int i = 0; i < len; i++) {
			if (str.charAt(i) == a[0]) {
				count++;
			}
		}
		return count;
	}

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		Statistics s = new Statistics();

		System.out.print("请输入一个字符串:");
		String s1 = input.next();
		s.setStr(s1);

		System.out.print("请输入要查找的字符:");
		String s2 = input.next();
		s.setStr2(s2);

		;
		System.out.println("\"" + s1 + "\"中包含" + s.seekStr(s2) + "个\"" + s2 + "\"");
	}

}

第5题

题目:

5、自定义String类(选做)
在这里插入图片描述

运行结果:

请添加图片描述

代码如下:

package work5;

import java.util.Arrays;
import java.util.Scanner;

public class MyString {
	private final char[] value;

	// 带参数的构造方法
	public MyString(char[] chs) {
		this.value = Arrays.copyOf(chs, chs.length);// 重新开空间
	}

	// 取下标为index的字符
	public char charAt(int index) {
		if (index >= 0 && index <= value.length + 1) {// 若下标合法
			return value[index];
		} else {
			return 0;// 异常值设置为0
		}
	}

	// 获取字符串长度
	public int length() {
		return value.length;
	}

	// 截取[begin,end)的字符
	public MyString substring(int begin, int end) {
		if (begin >= end) {
			return null;
		}
		int len = end - begin;
		char[] test = new char[len];
		for (int i = 0; i < len; i++) {// 先用test数组保存
			test[i] = value[begin + i];
		}
		return new MyString(test);
	}

	// 大写字母转成小写字母
	public MyString toLowerCase() {
		char[] test = new char[value.length];
		test = Arrays.copyOf(value, value.length);
		for (int i = 0; i < test.length; i++) {
			if (test[i] >= 'A' && test[i] <= 'Z') {
				test[i] = (char) (test[i] + 32);
			}
		}
		return new MyString(test);
	}

	// 判断两个字符串是否相等
	public boolean equals(MyString s) {
		if (value.length != s.length()) {
			return false;
		} else {
			for (int i = 0; i < s.length(); i++) {
				if (value[i] != s.charAt(i)) {
					return false;
				}
			}
			return true;
		}
	}

	// 将int转换成字符串
	public static MyString valueOf(int i) {
		// 计算i是几位数
		int len = 0;
		do {
			i /= 10;
			len++;
		} while (i != 0);
		char[] test = new char[len];
		for (int j = 0; j < len; j++) {
			test[i] = (char) (i + '0');
		}
		return new MyString(test);
	}

	// 打印看看
	public void show() {
		for (char c : value) {
			System.out.print(c + " ");
		}
		System.out.println();
	}

	// 构造方法
	public MyString(String s) {
		this.value = s.toCharArray();
	}

	// 比较两个字符串的大小。0==相等 正数==大于 负数==小于
	public int compare(String s) {
		char[] test = s.toCharArray();
		int len1 = value.length;
		int len2 = test.length;
		int lenMin = len1 < len2 ? len1 : len2;
		for (int i = 0; i < lenMin; i++) {
			if (value[i] != test[i]) {
				return value[i] - test[i];
			}
		}
		return len1 - len2;
	}

	// 截取[begin,len-1]的字符
	public MyString substring(int begin) {
		return substring(begin, this.length());
	}

	// 小写字母转大写字母
	public MyString toUpperCase() {
		char[] test = new char[value.length];
		test = Arrays.copyOf(value, value.length);
		for (int i = 0; i < test.length; i++) {
			if (test[i] >= 'a' && test[i] <= 'z') {
				test[i] = (char) (test[i] - 32);
			}
		}
		return new MyString(test);
	}

	// 将字符串以字符数组的形式返回
	public char[] toChars() {
		return value;
	}

	// 将boolean转换成字符串
	public static MyString valueOf(boolean b) {
		char[] test;
		if (b == true) {
			test = new char[] { 't', 'r', 'u', 'e' };
		} else {
			test = new char[] { 'f', 'a', 'l', 's', 'e' };
		}
		return new MyString(test);
	}

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		char[] ch1 = { 'a', 'B', 'c', '1', 'D' };
		MyString sss = new MyString(ch1);// 测试初始化创建
		System.out.print("初始字符串为:");
		sss.show();// 输出看看
		System.out.println("******************");

		System.out.println("字符串长度:" + sss.length());
		System.out.println("------------------");

		System.out.println("取下标为2的字符:" + sss.charAt(2));
		System.out.println("^^^^^^^^^^^^^^^^^^");

		MyString s2 = sss.substring(1, 3);// 测试截取
		System.out.print("截取从下标在[1,3)的字符:");
		s2.show();// 打印看看
		System.out.println("==================");

		MyString s3 = sss.toLowerCase();
		System.out.print("大写字母转小写字母:");
		s3.show();
		System.out.println("^^^^^^^^^^^^^^^^^^");

		char[] ch2 = { 'A', 'b', 'c', '1' };
		MyString s4 = new MyString(ch2);
		System.out.print("第一个字符串:");
		sss.show();
		System.out.print("第二个字符串:");
		s4.show();
		System.out.println("判断两个字符串是否相等:" + sss.equals(s4));
		System.out.println("------------------");

		int a = 66;
		MyString s5 = MyString.valueOf(a);
		System.out.print("int类型" + a + "转换成的字符串是:");
		s5.show();
		System.out.println();
		System.out.println();
		System.out.println();
		String s6 = "ofGdgA0645";
		MyString ssss = new MyString(s6);
		System.out.print("初始字符串为:");
		ssss.show();// 输出看看
		System.out.println("------------------");

		System.out.print("请输入参加比较的字符串:");
		String s7 = input.next();// hgejt6
		System.out.println("判断两个字符串是否相等(0==相等 正数==大于 负数==小于):" + ssss.compare(s7));
		System.out.println("------------------");

		System.out.print("截取从下标3开始的子串:");
		ssss.substring(3).show();
		System.out.println("------------------");

		System.out.println("小写字母转大写字母");
		ssss.toUpperCase().show();
		System.out.println("------------------");

		System.out.print("将字符串以字符数组的形式返回,并打印:");
		char[] chss = ssss.toChars();
		for (char c : chss) {
			System.out.print(c + " ");
		}
		System.out.println("\n------------------");

		System.out.print("将boolean的true转换成字符串,并打印出来:");
		MyString test = MyString.valueOf(true);
		test.show();

	}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值