1.判断邮箱
输入一个电子邮箱,判断是否是正确电子邮箱地址。 正确的邮箱地址:
- 必须包含 @ 字符,不能是开头或结尾
- 必须以 .com结尾
- @和.com之间必须有其他字符
(1) Email类:
package swp.kaifamiao.codes.Java.d0823;
/*
* 输入一个电子邮箱,判断是否是正确电子邮箱地址。
* 正确的邮箱地址:
* 必须包含 @ 字符,不能是开头或结尾
* 必须以 .com结尾
* @和.com之间必须有其他字符
*/
/**
* {class description}
*
* @author SWP
* @version 1.0.0
*/
public class Email {
/**
* 判断输入的电子邮箱是否正确
* @ email 控制台输入
* @return 布尔型(true/false)
*/
public static String isEmail(String email){
// 判断是否包含 @ 字符,且不位于开头或结尾
if (!email.contains("@") || email.startsWith("@") || email.endsWith("@")){
return "邮箱无效!";
}
// 判断是否以“.com”结尾
if (!email.endsWith(".com")){
return "邮箱无效!";
}
// 判断“@”和“,com”之间有没有其他字符
int atIndex = email.indexOf("@");
int comIndex = email.indexOf(".com");
if (atIndex+1 > comIndex){
return "邮箱无效!";
}
return "您输入的邮箱有效!";
}
}
(2) EmailTest测试类:
package swp.kaifamiao.codes.Java.d0823;
import java.util.Scanner;
/**
* {class description}
*
* @author SWP
* @version 1.0.0
*/
public class EmailTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入邮箱:");
String str = input.next();
String str1 = Email.isEmail(str);
System.out.println(str1);
}
}
(3) 运行效果:
2. 生成密码
随机生成一个 6 位的密码,要求:
- 不包含重复字符
- 要有字母和数字
- 不能以数字开头
(1) Email类:
package swp.kaifamiao.codes.Java.d0823;
/*
*随机生成一个 6 位的密码,要求:
* 不包含重复字符
* 要有字母和数字
* 不能以数字开头
*/
import java.util.Random;
/**
* {class description}
*
* @author SWP
* @version 1.0.0
*/
public class Password {
public static void main(String[] args) {
// 定义一个长度为6的字符数组用来存放密码
char[] arr = new char[6];
// 生成数字和字母的字符集合
String characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
// 创建随机对象
Random rand = new Random();
// 设置密码的开头为非数字的随机字母
arr[0] = characters.charAt(rand.nextInt(52) + 10);
for (int i = 1; i < arr.length; i++) {
char randomChar;
do {
randomChar = characters.charAt(rand.nextInt(62));
} while (contains(arr, randomChar));
arr[i] = randomChar;
}
// 将字符数组转换为字符串
String randomPassword = new String(arr);
System.out.println("随机生成的密码:" + randomPassword);
}
// 判断字符数组中是否包含某个字符
private static boolean contains(char[] arr, char c) {
for (char ch : arr) {
if (ch == c) {
return true;
}
}
return false;
}
}
(2)运行效果:
3.生成幸运数字
随机生成 20 个 1 ~ 40 之间的不重复幸运数字存储到数组中。 要求:
- 数组中的数字乱序
(1) LuckyNumbers类:
package swp.kaifamiao.codes.Java.d0823;
/*
生成幸运数字
随机生成 20 个 1 ~ 40 之间的不重复幸运数字存储到数组中。 要求:
数组中的数字乱序
*/
import java.util.Arrays;
import java.util.Random;
/**
* {class description}
*
* @author SWP
* @version 1.0.0
*/
public class LuckyNumbers {
public static void main(String[] args) {
int[] arr = new int[20];
Random rand = new Random();
for (int i = 0; i < arr.length;) {
int num = rand.nextInt(40) + 1;
Arrays.sort(arr, 0, i);
if (Arrays.binarySearch(arr, 0, i, num) < 0){
arr[i ++] = num;
}
}
charge(arr);
charge(arr);
charge(arr);
System.out.println(Arrays.toString(arr));
}
public static void charge(int[] arr){
Random random = new Random();
for (int i = 0; i < 10; i++) {
int index = random.nextInt(arr.length);
int index1 = random.nextInt(arr.length);
int temp = arr[index];
arr[index] = arr[index1];
arr[index1] = temp;
}
}
}
(2) 运行效果:
4.去除重复字符
编写一个程序,去除字符串中的重复字符
(1) Deduplication类:
package swp.kaifamiao.codes.Java.d0823;
/**
* {class description}
*
* @author SWP
* @version 1.0.0
*/
public class Deduplication {
public static String arrDeduplication(String str){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (sb.indexOf(String.valueOf(c)) == -1){
sb.append(c);
}
}
return sb.toString();
}
}
(2) DeduplicationTest类:
package swp.kaifamiao.codes.Java.d0823;
import java.util.Scanner;
/**
* {class description}
*
* @author SWP
* @version 1.0.0
*/
public class DeduplicationTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入字符串:");
String str = input.next();
String result = Deduplication.arrDeduplication(str);
System.out.println("去重后的字符串为:" + result);
}
}
(3) 运行效果:
5.最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
(1)MaxSubstring类:
package swp.kaifamiao.codes.Java.d0823;
import java.util.Arrays;
import java.util.Scanner;
/**
* {class description}
*
* @author SWP
* @version 1.0.0
*/
public class MaxSubstring {
public static int maxSub(String str) {
int count= 0;
int[] arr = new int[str.length()];
int max = 0;
for (int i = 0; i < str.length(); i++) {
int j = str.codePointAt(i);
Arrays.sort(arr);
// 查看元素有没有出现过
if (Arrays.binarySearch(arr, str.length() - i, arr.length, j) < 0) {
// 没有出现过
count ++;
} else {
// 出现过
max = Math.max(max,count);
count = 1;
arr = new int[str.length()];
}
arr[0] = j;
}
max = Math.max(max,count);
return max;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入字符串:");
String str = scanner.nextLine();
int result = maxSub(str);
System.out.println("最长子串长度为:" + result);
}
}