代码题
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
反转字符串
- 反转键盘录入的字符串。
- 代码实现,参考效果如图所示:
public class Demo01 {
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();
}
}
关键api:StringBuilder reverse()
判断QQ号码格式的准确性
-
键盘录入QQ号码,验证格式的正确性。
– 必须是5—12位数字。
– 0不能开头。 -
代码实现,参考效果如图所示:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入qq号码:");
String qq = input.next();
System.out.print("这个qq号是否正确:");
if(qq.matches("[1-9][0-9]{4,11}+")){
System.out.println(true);
}else{
System.out.println(false);
}
input.close();
}
关键api: boolean matches(String regex)
所用的正则表达式: [1-9][0-9]{4,11}+
字符串查找
- 字符串查找。
– 键盘录入一个大字符串,再录入一个小字符串。
– 统计小字符串在大字符串中出现的次数。 - 代码实现,效果如图所示:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入大字符串:");
String big = input.next();
System.out.print("请输入小字符串:");
String small = input.next();
int index;
int count = 0;
while((index = big.indexOf(small))!=-1){
big = big.substring(index+small.length());
count++;
}
System.out.println(small + "出现了" +count + "次");
input.close();
}
替换某字符串中的某字符串。
- 替换某字符串中的某字符串。
– 键盘录入一个srcStr字符串,再录入一个delStr字符串。
– 删除该字srcStr符串中的所有delStr字符串。
– 并且统计delStr字符串在srcStr中出现的次数 - 代码实现,部分效果如图所示:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入原字符串:");
String src = input.next();
System.out.print("请输入要删除的字符串:");
String del = input.next();
String result = src.replaceAll(del, "");
int count = (src.length() - result.length())/del.length();
System.out.println(del+"共出现了:" + count + "次");
System.out.println("删除" + del + "后字符串:" + result);
input.close();
}
保留两位小数
- 生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。
- 代码实现,效果如图所示:
public static void main(String[] args) {
double num = Math.random() * 100;
System.out.println("随机数为:" +num);
String str = num + "";
str = str.substring(0,str.indexOf(".") + 3);
System.out.println("截取小数点后两位后为:" + str);
}
筛选字符串
- 筛选字符串。
– 定义数组,存入多个字符串。
– 删除长度大于5的字符串,打印删除后的数组。 - 代码实现,效果如图所示:
public static void main(String[] args) {
String[] arr = {"addaff","java","fhafkkf","haha","lin","yan","Iloveyou"};
System.out.println("原字符串:");
System.out.println( Arrays.toString(arr));
int index = 0;
while(index < arr.length){
if(arr[index].length()>5){
System.arraycopy(arr, index+1, arr, index, arr.length-index-1);
arr = Arrays.copyOf(arr, arr.length-1);
}else{
index++;
}
}
System.out.println("删除后:");
System.out.println(Arrays.toString(arr));
}
判断回文字符串
- 判断回文字符串。如果一个字符串,从前向后读和从后向前读,都是一个字符串,称为回文串,比如mom,dad,noon。
- 代码实现,效果如图所示:
方法一: 利用StringBuilder的reverse方法
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
String str = sc.nextLine();
StringBuilder s = new StringBuilder(str);
String string = s.reverse().toString();
System.out.print("回文数:");
if(str.equals(string)){
System.out.println(true);
}else{
System.out.println(false);
}
sc.close();
}
方法二:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
String str = sc.nextLine();
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.print("回文数:");
if(flag){
System.out.println(true);
}else{
System.out.println(false);
}
sc.close();
}
校验密码是否合法
- 校验密码是否合法。
– 必须至少9个字符。
– 必须至少2个大写字符。
– 必须包含小写字母和数字。 - 代码实现,效果如图所示:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String password = sc.nextLine();
char[] arr = password.toCharArray();
int upCount = 0;
int numCount = 0;
int lowerCount = 0;
for (int i = 0; i < arr.length; i++) {
if(arr[i]>='A' && arr[i]<='Z'){
upCount++;
}else if(arr[i]>='a' && arr[i]<='z'){
lowerCount++;
}else if(arr[i]>='0' && arr[i]<='9'){
numCount++;
}
}
System.out.print(password+"是否合法:");
if(password.length() >=9 && upCount>=2 && numCount!=0 && lowerCount!=0){
System.out.println(true);
}else{
System.out.println(false);
}
sc.close();
}
处理字符串数字
- 定义Handleable接口,具备一个处理字符串数字的抽象方法方法String handleString(String num);
– 处理方式1:取整数部分。
– 处理方式2:保留指定位小数,四舍五入。 - 代码实现,效果如图所示:
开发提示: - 匿名内部类的方式,调用所有抽象方法。
package org.example.string;
import java.math.BigDecimal;
public class HandleString {
public static void main(String[] args) {
String num = "23.34532251";
//将小数进行取整
Handleable handleable = new Handleable() {
@Override
public String handleString(String num) {
num = num.substring(0, num.indexOf("."));
return num;
}
};
System.out.println("原数字为:" + num);
System.out.println("取整后为:" + handleable.handleString(num));
//取四位小数
Handleable handleable2 = new Handleable() {
@Override
public String handleString(String num) {
BigDecimal bigDecimal = new BigDecimal(num);
BigDecimal bigDecimal2 = new BigDecimal("1");
BigDecimal shang = bigDecimal.divide(bigDecimal2, 4, BigDecimal.ROUND_HALF_UP);
return shang.toString();
}
};
System.out.println("原数字为:" + num);
System.out.println("保留四位小数为:" + handleable2.handleString(num));
}
}
interface Handleable {
String handleString(String num);
}
对字符串进行升序排列
- 案例:有一个字符串String abc = “342567891”,请写程序将字符串abc进行升序,可以使用JDK API中的现有的功能方法。
public static void main(String[] args) {
String abc = "342567891";
char[] chars = abc.toCharArray();
Arrays.sort(chars);
abc = new String(chars);
System.out.println(abc);
}