习题集(1)-String类

 1 public class Demo01 {
 2     /**
 3      * 1.编写一个方法,将一段文本中的各个单词的字母顺序翻转,
 4      * 例如:"I like writing code best",将变成"I ekil gnitirw edoc tseb"。
 5      * @param args
 6      */
 7     public static void main(String[] args) {
 8         String str = "I like writing code best";
 9         method(str);
10     }
11 
12     public static void method(String str){
13         //将字符串按照空格切开
14         String[] ss = str.split(" ");
15         for(String sss : ss) {
16             //创建StringBuilder对象,将string类型转换为StringBuilder类
17             StringBuilder sb = new StringBuilder(sss);
18             //调用reverse()方法
19             StringBuilder reverse = sb.reverse();
20             System.out.print(reverse + " ");
21         }
22     }
23 }

 

 1 public class Demo02 {
 2     /**
 3      * 2. String s="name=王五 age=18 classNum=1101”;
 4      * 将上面的字符串中包含的信息存放到 Student(里面有 name,age,
 5      * classNum 三个属性)的对象中
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         String s = "name=王五 age=18 classNum=1101";
10         method(s);
11 
12     }
13     public static void method(String str){
14         //创建学生对象
15         Student student = new Student();
16         //将字符串按照空格分开
17         String[] ss = str.split(" ");
18         //遍历字符串数组,将每个元素按照=分割
19         for(String s:ss){
20             String[] split = s.split("=");
21             if(split[0].equals("name")){
22                 student.setName(split[1]);
23             }else if(split[0].equals("age")){
24                 student.setAge(Integer.valueOf(split[1]));
25             }else if(split[0].equals("classNum")){
26                 student.setClassNum(Integer.valueOf(split[1]));
27             }
28         }
29         System.out.println("学生的信息为:"+student);
30     }
31 }
32 class Student{
33     private String name;
34     private Integer age;
35     private Integer classNum;
36 
37     public String getName() {
38         return name;
39     }
40 
41     public void setName(String name) {
42         this.name = name;
43     }
44 
45     public Integer getAge() {
46         return age;
47     }
48 
49     public void setAge(Integer age) {
50         this.age = age;
51     }
52 
53     public Integer getClassNum() {
54         return classNum;
55     }
56 
57     public void setClassNum(Integer classNum) {
58         this.classNum = classNum;
59     }
60 
61     @Override
62     public String toString() {
63         return "Person{" +
64                 "name='" + name + '\'' +
65                 ", age=" + age +
66                 ", classNum=" + classNum +
67                 '}';
68     }
69 }

 


public class Demo03 {
/**
* 3. 字符串压缩:利用字符重复出现的次数,编写一种方法,实现基本的字符
* 串压缩功能。比如,字符串“aabccdd”会变成“a2b1c2d2”。若“压缩”以后的字
* 符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文
* 字母(a-z)
* 示例 1:输入:aabcccccddddd
* 输出:a2b1c5d5
* 示例 2:输入:“abcdd” 输出:“abcdd” 解释:因为压缩后的字符串为:”a1b1c1d2”,长度大于原字符串
*
* @param args
*/

1
public static void main(String[] args) { 2 Scanner input = new Scanner(System.in); 3 System.out.println("请输入字符串"); 4 String s = input.nextLine(); 5 System.out.println(method(s)); 6 } 7 8 public static String method(String str) { 9 if (str.length() == 0) { 10 return str; 11 } 12 //创建StringBuilder类 13 StringBuilder sb = new StringBuilder(); 14 int js = 1; 15 char ch = str.charAt(0); 16 //遍历字符串 17 for (int i = 0; i < str.length(); i++) { 18 if (ch == str.charAt(i)) { 19 js++; 20 } else { 21 sb.append(ch); 22 sb.append(js); 23 ch = str.charAt(i); 24 js = 1; 25 } 26 } 27 sb.append(ch); 28 sb.append(js); 29 return str.length() > sb.length() ? sb.toString() : str; 30 } 31 }

 

 1 public class Demo04 {
 2     /**
 3      * 4.写一个和 trim 功能相同的方法
 4      * 思路:
 5      * 1.定义两个变量,用来存储两个角标
 6      * 2.分别从头和尾遍历字符串,直到找到第一个不为空格的字符
 7      * 3.截取字符串
 8      * @param args
 9      */
10     public static void main(String[] args) {
11         String str = "    aaabbbccc    ";
12         String ss = method(str);
13         System.out.println("结果为:"+ss);
14 
15     }
16 
17     public static String method(String str){
18        int begin = 0;
19        int end = str.length()-1;
20        //从头遍历字符串
21         for(int i =0;i<str.length();i++){
22             if(str.charAt(i)!=' '){
23                 begin = i;
24                 break;
25             }
26         }
27         //从尾巴遍历
28         for(int i =str.length()-1;i>=0;i--){
29             if(str.charAt(i)!=' '){
30                 end = i;
31                 break;
32             }
33         }
34         //调用方法截取字符串
35         return str.substring(begin,end+1);
36     }
37 }

 

posted @ 2021-06-08 14:27  白杨树&  阅读(82)  评论(0编辑  收藏  举报