今天是学习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();
}
}