Java基础String常见的编程练习
1.对字符串数组进行排序
package javalianxi;import java.util.Arrays;
import java.util.Comparator;public class Test1 {public static void main(String[] args) {String[] array = { "cd", "CD", "bc", "AB", "ab", "bb", "BB", "dd", "tr", "fg", "aa" };//使用默认方法A-Za-z
// Arrays.sort(array);//自定义方法Aa-ZzArrays.sort(array, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {String s1 = o1.toUpperCase();String s2 = o2.toUpperCase();if(s1.equals(s2)) {return o1.compareTo(o2);}return s1.compareTo(s2);}});System.out.println(Arrays.toString(array));}
}
2.如何对字符串的内容进行统计
package javalianxi;public class Test2 {public static void main(String[] args) {String s = "我0a本1bB将2c心3d向4e明5f月";int number = 0;int english = 0;for(int i = 0; i<s.length();i++) {char c =s.charAt(i);//判断是否是数子if(c >= '0' && c<='9') {number++;}//判断是否是字母if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') {english++;}}System.out.println(number);System.out.println(english);}
}
3.判断数字是否是回文数(回文数类似于12321,正着念反着念都是相同的)
package javalianxi;public class Test3 {public static void main(String[] args) {//判断是否是回文数int num = 9876789;//将数值转换成字符串String s = String.valueOf(num);String number = "";for(int i = 0; i<s.length();i++) {//拿出每一个字符进行拼接char c = s.charAt(i);number = c + number;}System.out.println(s.equals(number));}
}
4.当前日期是今年的第几天
- 先判断是否是闰年
- 再对二月进行修改
- 将日期相加
package javalianxi;import java.time.LocalDate;public class Test4 {public static void main(String[] args) {String date = "2024-09-28";//截取出年月日int year = Integer.parseInt(date.substring(0, 4));int month = Integer.parseInt(date.substring(5, 7));int day = Integer.parseInt(date.substring(8));//方法一:使用LocalDate类LocalDate dates = LocalDate.of(year, month, day);int ret = dates.getDayOfYear();System.out.println(ret);//方法二int[] arr = {31,28,31,30,31,30,31,31,30,31,30,31};//判断二月if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {arr[1]++;}//累加當前月int days =0;for(int i = 0;i<=month-2;i++) {days +=arr[i];}days += day;System.out.println(days);}
}
5.String为什么是不可变的?
- 数据结构:使用final关键字修饰char[]类型的数组
- 方法实现:所有涉及修改的方法,均未在原数组中进行字符串内容修改,而是产生了一个新的字符串对象
6.输出所有的水仙花数
package demo;public class Demo01 {public static void main(String[] args) {//输出所有的水仙花数for(int i = 100;i<1000;i++) {int hundred = i /100; //百位数int ten = (i % 100) /10; //十位数int one = i % 10;if((hundred * hundred * hundred)+(ten * ten * ten)+(one * one * one) == i) {System.out.println(i);}}}
}
7.判断三角形是否成立
package javalianxi;import java.math.BigInteger;public class Test5 {public static void main(String[] args) {// int a =2,b=3,c=4;//方法一
// int max = a>b?(a>c?a:c):(b>c?b:c);
// int min = Math.min(Math.min(a, b), c);
// int mid = a+b+c-max-min;
// String san = max<min+mid?"yes":"no";
// System.out.println(san);//方法二BigInteger a = new BigInteger("3");BigInteger b = new BigInteger("4");BigInteger c = new BigInteger("5");BigInteger max = (a.compareTo(b)== 1)?(a.compareTo(c)==1?a:c):(b.compareTo(c)==1?b:c);BigInteger min = (a.compareTo(b)== -1)?(a.compareTo(c)== -1?a:c):(b.compareTo(c)== -1?b:c);BigInteger mid = a.add(b).add(c).subtract(max).subtract(min);String san = max.compareTo(min.add(mid))== -1?"yes":"no";System.out.println(san);}
}