第1题
反转键盘录入的字符串。
代码实现:
import java.util.Scanner; public class Test01 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请键盘输入字符串:"); String str = input.next(); StringBuilder s = new StringBuilder(str); str = s.reverse().toString(); System.out.println("反转后:" + str); input.close(); } }
第2题
键盘录入QQ号码,验证格式的正确性。
1、必须是5—12位数字。
2、0不能开头。
代码实现:
public class Test02 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入QQ号码:"); String str = scan.next(); System.out.println("这个QQ号码是否正确:"); if(str.matches("[1-9][0-9]{4,11}+")){//正则表达式 System.out.println(true); }else{ System.out.println(false); } scan.close(); } }
第3题
字符串查找。
-键盘录入一个大字符串,再录入一个小字符串。
-统计小字符串在大字符串中出现的次数。
效果如图所示:
代码实现:
public class Test03 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("请输入一个大字符串:"); String bigStr = scan.next(); System.out.print("请输入一个小字符串:"); String smallStr = scan.next(); int count = 0; int index ; while((index = bigStr.indexOf(smallStr)) != -1){ bigStr = bigStr.substring(index+smallStr.length()); count ++; } System.out.println("小字符串"+smallStr+",在大字符串出现:"+count+"次"); scan.close(); } }
第4题
替换某字符串中的某字符串。
- 键盘录入一个srcStr字符串,再录入一个delStr字符串。
- 删除该字srcStr符串中的所有delStr字符串。
- 并且统计delStr字符串在srcStr中出现的次数。效果如图:
代码实现:
public class Test04 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("请输入源字符串:"); String srcStr = scan.nextLine(); System.out.print("请输入要删除的字符串:"); String delStr = scan.nextLine(); int count = 0; int index; String tempStr = srcStr; while((index = tempStr.indexOf(delStr)) != -1){ tempStr = tempStr.substring(index+delStr.length()); count++; } System.out.println("源字符串中总共包含:"+count+"个"+delStr); String replaceStr = srcStr.replaceAll(delStr, ""); System.out.println("删除"+delStr+"后的字符串为:"+replaceStr); scan.close(); } }
第5题
生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。
代码实现:
public class Test05 { public static void main(String[] args) { Random ran = new Random(); double d = ran.nextDouble()*100; System.out.println(d); String str = ""+d; str = str.substring(0, str.indexOf(".")+3); System.out.println("截取小数点后两位为:"+str); } }
第6题
筛选字符串。
- 定义数组,存入多个字符串。
- 删除长度大于5的字符串,打印删除后的数组。
效果如下:
代码实现:
public class Test06 { public static void main(String[] args) { String[] str = {"hcs","15dad6","das","jionoia","你好啊"}; System.out.println("原来的字符串:"+Arrays.toString(str)); int i = 0; while(i < str.length){ if(str[i].length() > 5){ System.arraycopy(str, i+1, str, i, str.length-i-1); str = Arrays.copyOf(str,str.length-1); }else{ i++; } } System.out.println("删除长度大于5的字符串:"+Arrays.toString(str)); } }
第7题
判断回文字符串。如果一个字符串,从前向后读和从后向前读,都是一个字符串,称为回文串,比如mom,dad,noon。
代码实现:
public class Test07 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String str = scan.next(); //方式一 // StringBuilder sb = new StringBuilder(str); // String reverse = sb.reverse().toString(); // System.out.println("回文数:"+((reverse.equals(str))?true:false)); //方式二: char[] arr = str.toCharArray(); boolean flag = true; for(int left = 0,right = arr.length-1; left <= right; left++,right--){ if(arr[left] != arr[right]){ flag = false; break; } } System.out.println("回文数:"); if(flag){ System.out.println(true); }else{ System.out.println(false); } } }
第8题
校验密码是否合法。
必须至少9个字符。
必须至少2个大写字符。
必须包含小写字母和数字。
效果如图:
代码实现:
public class Test08 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入一串密码:"); String str = scan.nextLine(); char[] arr = str.toCharArray(); int numCount = 0; int upCount = 0; int lowerCount = 0; for(int i = 0; i < arr.length; i++){ if(arr[i] >= '0' && arr[i] <= '9'){ numCount++; }else if(arr[i] >= 'A' && arr[i] <= 'Z'){ upCount++; }else if(arr[i] >= 'a' && arr[i] <= 'z'){ lowerCount++; } } if(str.length() >= 9 && upCount >= 2 && lowerCount > 0 && numCount > 0){ System.out.println(str+"是否合法:"+true); }else{ System.out.println(str+"是否合法:"+false); } scan.close(); } }
第9题
模拟用户登录。
定义用户类,属性为用户名和密码。
使用数组存储多个用户对象。
录入用户和密码,对比用户信息,匹配成功登录成功,否则登录失败。
登录失败时,当用户名错误,提示没有该用户。
登录失败时,当密码错误时,提示密码有误。
效果如图:
密码错误:
用户不存在:
成功登录:
代码实现:
public class Test09 { public static void main(String[] args) { User[] user = new User[3]; user[0] = new User("Jack","1234"); user[1] = new User("Rose","4657"); user[2] = new User("Tom","789"); for (int i = 0; i < user.length; i++) { System.out.println(user[i]); } Scanner input =new Scanner(System.in); System.out.print("请输入用户名:"); String username = input.next(); System.out.print("请输入密码:"); String password = input.next(); System.out.print("登录结果:"); for (int i = 0; i < user.length; i++) { if(user[i].getName().equals(username)){ if(user[i].getPassword().equals(password)){ System.out.println("登录成功!"); break; }else{ System.out.println("密码错误!"); break; } } if(i == user.length-1){ System.out.println("用户名不存在!"); } } input.close(); } } class User{ private String name; private String password; public User() { super(); } public User(String name, String password) { super(); this.name = name; this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return name + "-" + password ; } }
第10题
定义Handleable接口,具备一个处理字符串数字的抽象方法方法String handleString(String num);
处理方式1:取整数部分。
处理方式2:保留指定位小数,四舍五入。
效果如图:
代码实现:
public class Test10 { public static void main(String[] args) { String srcStr = "23.23456789"; System.out.println("源数字:"+ srcStr); String str = new Handleable(){ @Override public String handleString(String num){ int index = num.indexOf("."); if(index != -1){ num = num.substring(0, num.indexOf(".")); } return num; } }.handleString(srcStr); System.out.println("取整后:"+str); System.out.println("源数字:"+ srcStr); Handleable str1 = new Handleable(){ @Override public String handleString(String num) { int index = num.indexOf("."); String num1 = ""; if(index != -1){ num = num.substring(0, num.indexOf(".")+6); double d = Double.parseDouble(num); // System.out.println(d); d = ((int)(d * 10000 + 0.5)*1.0) / 10000; // System.out.println(d); num1 = ""+d; } return num1; } }; String ss = str1.handleString(srcStr); System.out.println("保留小数点后4位四舍五入后:"+ss); } } interface Handleable{ String handleString(String num); }
第11题
已知一个字符串String str = "1、 hello 2. world 3. java 4.String 5. haha 6、HELLO";
要求统计出现次数最多的字母及其出现的次数。不区分大小写。
效果如图:
代码实现:
public class Test11 { public static void main(String[] args) { String str = "1、 hellao 2. world 3. java 4.String 5. haha 6、HELLO"; System.out.println(str); //全部转换为小写 str = str.toLowerCase(); // System.out.println(str); //将所有非字母删除 str = str.replaceAll("[^a-z]", ""); // System.out.println(str); //装换为字符数组 char[] arr = str.toCharArray(); //定义装字母的数组 int counts[] = new int[26]; for(int i = 0; i < arr.length; i++){ counts[arr[i]-97]++; } //定义最大值 int max = counts[0]; for(int i = 0; i < counts.length; i++){ if(max < counts[i]){ max = counts[i]; } } //打印 for(int i = 0; i < counts.length; i++){ if(counts[i] == max){ System.out.println((char)(i+97)+"出现次数最多,出现了"+max+"次"); } } } }
第12题
已知字符串String str = "1.hello2.world3.java4.string";要求拆分出每一个单词,并遍历显示
效果如图:
代码实现:
public class Test12 { public static void main(String[] args) { String str = "1.hello2.world3.java4.string"; System.out.println("源字符串:"+str); str = str.replaceAll("^\\d\\.",""); System.out.println("去除数字后:"+str); String[] split = str.split("\\d\\."); System.out.println("遍历显示:"); for(int i = 0; i < split.length; i++){ System.out.println(split[i]); } } }
这次分享就到这里咯,常用类写完应该就是集合了,期待吧。