String类综合题型
[Java] 纯文本查看 复制代码 package com.heima.test;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class Test1 {
/**
*从控制台接收一串字符串,完成以下要求 (共10分)
a,求出该字符串的长度并输出到控制台,如字符串长度为:X
b,将该字符串转为数组(toCharArray),判断(if)该数组第一个字符(arr[0])和最后一个字符(arr[arr.length-1])是否相同,不相同则交换(想第三方变量)
c,统计出数组中的每个字符出现的次数,然后自然排序(Tree树结构)后按指定格式输出到控制台,如a=3,b=4,c=5
d,将第二步互换后的数组角标为奇数的字符用”*”号替换,然后遍历输出
e,将数组中元素重新拼接成字符串,最后截取第一个'*'到第三个'*'之间的数据输出(注意:两边都包含'*')
例如输入字符串:aaabbbbccccdddeef 打印台输出效果如下:
*/
public static void main(String[] args) {
//键盘录入一串字符串:
Scanner sc = new Scanner(System.in);
System.out.println("请输入一段字符串:");
String line = sc.nextLine();
//a,求出该字符串的长度并输出到控制台,如字符串长度为:X
System.out.println("该字符串的长度为:" + line.length());
//b,将该字符串转为数组,判断该数组第一个字符和最后一个字符是否相同,不相同则交换
char[] arr = line.toCharArray();
if(arr[0] != arr[arr.length-1]){
char temp = arr[0];
arr[0] = arr[arr.length-1];
arr[arr.length-1] = temp;
}
/*String change = "";
for(char c : arr){
change = change + c;
}
System.out.println("交换前的数据为:"+line +",交换后的数据为:"+change);*/
//c,统计出每个字符出现的次数,然后按指定格式输出到控制台,如a=3,b=4,c=5
TreeMap<Character,Integer> map = new TreeMap<>();
for (int i = 0; i < line.length(); i++) {
char ch = line.charAt(i);
map.put(ch, map.containsKey(ch) ? map.get(ch) +1 : 1);
}
//遍历输出
Set<Entry<Character, Integer>> entrySet = map.entrySet();
StringBuilder sb = new StringBuilder();
for(Entry<Character, Integer> en : entrySet){
Character key = en.getKey();
Integer value = en.getValue();
sb.append(key).append("=").append(value).append(",");
}
//StringBuffer subString(0,5)
System.out.println("每个字符出现的次数为:"+sb.substring(0, sb.length()-1));
//d,将第二步互换后的数组角标为奇数的字符用”*”号替换,然后重新拼接成字符串,在控制台输出替换后的字符串
for (int i = 0; i < arr.length; i++) {
if(i % 2 != 0){
arr[i] = '*';
}
}
String s = "";
for(char c :arr){
s += c;
}
System.out.println("被替换后的数组元素为:"+s);
//e,将数组中元素重新拼接成字符串,最后截取第一个'*'到第三个'*'之间的数据输出(注意:两边都包含'*') aaabbbcccdddeeeff
System.out.println("第一个*到第三个*之间的数据为:"+s.substring(1,6));
}
}
|