练习一:找出字符串中不同类型字符出现次数:
package com.cy;
/*
接受控制台输入字符串并进行字符串类型的统计
*/
import java.util.Scanner;
public class CountStrings {
public static void main(String[] args) {
int digital = 0;
int character = 0;
int other = 0;
int blank = 0;
char[] ch = null;
System.out.println("请在控制台输入要检测的字符");
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
ch = s.toCharArray();
for (int i = 0; i < ch.length; i++) {
if(ch[i]>='0'&&ch[i]<9){
digital++;
}else if ((ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z')){
character++;
}else if (ch[i]==' '){
blank++;
}else {
other++;
}
}
System.out.println("英文个数:"+character);
System.out.println("数值有:"+digital);
System.out.println("空格有:"+blank);
System.out.println("其他字符个数:"+other);
}
}
测试结果如下:
案例二:
格式化字符串的方法之年月日的使用方法格式化
package com.cy;
/*
格式化字符串的方法之年月日的使用方法格式化
*/
import java.util.Date;
import java.util.Locale;
public class StringExampleFormatDate {
public static void main(String[] args) {
Date date = new Date();
Locale localeChinaDate = Locale.CHINA;
String year = String.format(localeChinaDate, "%tY", date);
String month = String.format(localeChinaDate, "%tm", date);
String dayInMonth = String.format(localeChinaDate, "%td",date);
System.out.println("今年是:"+year+"年");
System.out.println("本月是:"+month+"月");
System.out.println("今天是:"+dayInMonth+"号");
}
}
运行结果如下:
案例三:
输入字符串,打印出该字符串的所有排列,思路:
1.逐渐缩小问题的规模,并用同样的方法求子问题(自己调自己,递归来解决)
2.设置递归结束条件,防止死循环
package com.cy;
import java.util.Scanner;
/*
输入字符串,打印出该字符串的所有排列,思路:
1.逐渐缩小问题的规模,并用同样的方法求子问题(自己调自己,递归来解决)
2.设置递归结束条件,防止死循环
*/
public class StringPermutation {
public static void main(String[] args) {
String str = "";
System.out.println("请输入一个字符串");
Scanner scanner = new Scanner(System.in);
str = scanner.nextLine();
permutation(str.toCharArray(),0);
}
private static void permutation(char[]str,int i) {
if(i>=str.length){
return;
}else if (i==str.length-1){
System.out.println(String.valueOf(str));
}else{
for (int j = i; j < str.length ; j++) {
Character temp = str[j];
str[j] = str[i];
str[i] = temp;
permutation(str,i+1);
temp = str[j];
str[j] = str[i];
str[i] = temp;
}
}
}
}
运行结果如下:
案例四:
在字符串中找出第一个值出现一次的字符,由于只出现一次,可以用ASCII码表来实现求解
package com.cy;
import java.util.Scanner;
/*
在字符串中找出第一个值出现一次的字符,由于只出现一次,可以用ASCII码表来实现求解
*/
public class FindFirst {
public static void main(String[] args) {
String str ="";
System.out.println("请输入要测试的字符串儿");
Scanner scanner = new Scanner(System.in);
str = scanner.nextLine();
findFirst(str);
}
private static void findFirst(String str) {
if (str == null){
return;
}
int i = 0;
char[] arr = str.toCharArray();
int[] counts = new int[256];
char[] countsCharacter = arr;
for (int j = 0; j < countsCharacter.length; j++) {
int tmp = countsCharacter[j];
counts[tmp]++;
}
for (int j = 0; j < countsCharacter.length; j++) {
if(counts[countsCharacter[j]]==1){
System.out.println("找到的第一个出现一次的字符是"+ countsCharacter[j]);
return;
}
}
}
}
运行结果如下: