publicclassRegexDemo3{publicstaticvoidmain(String[] args){String str ="Java自从95年问世以来,经历了很多版木,目前企业中用的最多的是Java8和Java11,因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台。";String regex ="(Java[1-9]?\\d?)";Pattern p =Pattern.compile(regex);Matcher m = p.matcher(str);while(m.find()){System.out.println(m.group());}System.out.println("==============================================");String regex2 ="Java(8|11|17)";
p =Pattern.compile(regex2);
m = p.matcher(str);while(m.find()){String result = m.group();System.out.println(result);System.out.println(result.substring(0,4));}System.out.println("==============================================");// ?=表示输出前面部分
regex2 ="Java(?=8|11|17)";
p =Pattern.compile(regex2);
m = p.matcher(str);while(m.find()){String result = m.group();System.out.println(result);// System.out.println(result.substring(0, 4));}System.out.println("==============================================");// ?!表示输出前面部分,但只输出一次
regex2 ="Java(?!8|11|17)";
p =Pattern.compile(regex2);
m = p.matcher(str);while(m.find()){String result = m.group();System.out.println(result);// System.out.println(result.substring(0, 4));}System.out.println("==============================================");// ?:表示输出所有部分
regex2 ="Java(?:8|11|17)";
p =Pattern.compile(regex2);
m = p.matcher(str);while(m.find()){String result = m.group();System.out.println(result);// System.out.println(result.substring(0, 4));}}}
publicclassAlgorithm1{publicstaticvoidmain(String[] args){// 水仙花数amountOfNumber(100,999);// 四叶玫瑰数amountOfNumber(1000,9999);// 五角星数amountOfNumber(10000,99999);// 是否无两位数的自幂数?identifyNoTwoDigitArmstrongNumber();}publicstaticbooleanjudgeArmstrongNumber(int number){int n =0;ArrayList<Integer> numList =newArrayList<>();int tempNumber = number;while(tempNumber !=0){
numList.add(tempNumber %10);
tempNumber /=10;
n++;}double result =0;for(Integer integer : numList){
result +=Math.pow(integer, n);}return number == result;}publicstaticvoidamountOfNumber(int start,int end){int counter =0;for(int i = start; i < end; i++){if(judgeArmstrongNumber(i)){
counter++;}}System.out.println(counter);}publicstaticvoididentifyNoTwoDigitArmstrongNumber(){int counter =0;for(int i =10; i <99; i++){if(judgeArmstrongNumber(i)){
counter++;}}System.out.println(counter ==0);}}
6、将十进制数转换成任意进制
publicclassDecimal2AnyBase{publicstaticvoidmain(String[] args){int num =221;System.out.println("2进制: "+decimal2AnyBase(num,2));System.out.println("8进制: "+decimal2AnyBase(num,8));System.out.println("16进制: "+decimal2AnyBase(num,16));}publicstaticStringdecimal2AnyBase(int num,int base){String[] hexes ={"A","B","C","D","E","F"};if(base ==2&& num <1){return"0";}if(base ==8&& num <8){returnString.valueOf(num);}if(base ==16&& num <16){if(num <10){returnString.valueOf(num);}else{return hexes[num -10];}}StringBuilder stringBuilder =newStringBuilder();while(num >0){int remainder = num % base;if(base ==16){if(remainder >9){
stringBuilder.append(hexes[remainder -10]);
num /= base;continue;}}
stringBuilder.append(remainder);
num /= base;}return stringBuilder.reverse().toString();}}
7、任意进制转换成10进制
publicclassAnyBase2Decimal{publicstaticvoidmain(String[] args){String hex ="DD";String oct ="335";String bin ="11011101";System.out.println("hex to dec: "+anyBase2Decimal(hex,16));System.out.println("oct to dec: "+anyBase2Decimal(oct,8));System.out.println("bin to dec: "+anyBase2Decimal(bin,2));}publicstaticintanyBase2Decimal(String num,int base){int[] hexes ={10,11,12,13,14,15};int result =0;int power = num.length()-1;for(int i =0; i < num.length(); i++){char ch = num.charAt(i);if(base ==16){if(ch >='A'&& ch <='E'){
result +=(int)(hexes[ch -'A']*Math.pow(base, power--));}else{
result +=(int)((ch -'0')*Math.pow(base, power--));}}if(base ==8|| base ==2){
result +=(int)((ch -'0')*Math.pow(base, power--));}}return result;}}
importjava.time.ZonedDateTime;importjava.time.format.DateTimeFormatter;publicclassDateTimeFormatterTest{publicstaticvoidmain(String[] args){ZonedDateTime now =ZonedDateTime.now();System.out.println(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss").format(now));}}
publicclassMonkeyEatPeach{publicstaticvoidmain(String[] args){int days =10;System.out.println(func(10));}privatestaticintfunc(int days){if(days ==1){return1;}return2*(func(days -1)+1);}}
22、使用递归函数求和
publicclassRecursiveFuncTest{publicstaticvoidmain(String[] args){int num =100;System.out.println(sum(num));}publicstaticintsum(int num){if(num ==0){return0;}return num +sum(num -1);}}
23、使用递归函数计算一个数的阶乘
publicclassFactory{publicstaticvoidmain(String[] args){int num =5;System.out.println(factory(num));}privatestaticintfactory(int num){if(num ==1){return1;}return num *factory(num-1);}}
importjava.util.ArrayList;publicclassBasicSearch{publicstaticvoidmain(String[] args){int[] arr ={131,127,147,81,103,23,7,79};int num =7;int index =basicSearch(arr, num);if(index ==-1){System.out.println("Element not found");}else{System.out.println("Element found at index: "+ index);}int[] arr2 ={131,127,147,81,127,23,7,79};int num2 =127;ArrayList<Integer> indices =basicSearchWithRepetition(arr2, num2);if(indices ==null){System.out.println("Element not found");}else{System.out.print("Element found at index: ");for(int i =0; i < indices.size(); i++){System.out.print(indices.get(i)+" ");}}}privatestaticintbasicSearch(int[] arr,int num){for(int i =0; i < arr.length; i++){if(arr[i]== num){return i;}}return-1;}privatestaticArrayList<Integer>basicSearchWithRepetition(int[] arr,int num){ArrayList<Integer> list =newArrayList<>();for(int i =0; i < arr.length; i++){if(arr[i]== num){
list.add(i);}}if(list.isEmpty()){returnnull;}else{return list;}}}