1.编写一个方法,将一段文本中的各个单词的字母顺序翻转, 例如:"I like writing code best",将变成"I ekil gnitirw edoc tseb"。
package stringlei; import java.util.Scanner; public class Demo1 { public static void main(String[] args) { reverse(); } public static void reverse(){ System.out.println("请输入一段英文文本:"); Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); //将输入的文本按空格截取,用array存储各个子字符串 String[] array = s.split(" "); //新建一个StringBuffer的text保存反转结果 StringBuffer text = new StringBuffer(); for (int i = 0; i < array.length; i++) { //将String类型的字符串转换为StringBuffer类型 StringBuffer temp = new StringBuffer(array[i]); //转换后添加空格 temp.append(" "); //将字符串反转后追加到StringBuffer的text后面 text.append(temp.reverse()); } System.out.println("反转后的文本为:" + text); } }2. String s="name=王五 age=18 classNum=1101”; 将上面的字符串中包含的信息存放到 Student(里面有 name,age, classNum 三个属性)的对象中
package stringlei; public class Demo2 { public static void main(String[] args) { // TODO 自动生成的方法存根 String s = "name=王五 age=18 classNum=1101"; Student stu = new Student(); String [] arr = s.split(" "); String [] tex1 = arr[0].split("="); String [] tex2 = arr[1].split("="); String [] tex3 = arr[2].split("="); stu.setName(tex1[1]); stu.setAge(tex2[1]); stu.setClassNum(tex3[1]); System.out.println(stu); } } //Studentclass package stringlei; import java.util.Objects; public class Student { private String name; private String age; private String classNum; public Student(String name, String age, String classNum) { this.name = name; this.age = age; this.classNum = classNum; } public Student() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getClassNum() { return classNum; } public void setClassNum(String classNum) { this.classNum = classNum; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; return classNum == student.classNum; } @Override public int hashCode() { return Objects.hash(classNum); } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age='" + age + '\'' + ", classNum=" + classNum + '}'; } }3. 字符串压缩:利用字符重复出现的次数,编写一种方法,实现基本的字符 串压缩功能。比如,字符串“aabccdd”会变成“a2b1c2d2”。若“压缩”以后的字 符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文 字母(a-z) 示例 1:输入:aabcccccddddd 输出:a2b1c5d5 示例 2:输入:“abcdd” 输出:“abcdd” 解释:因为压缩后的字符串为:”a1b1c1d2”,长度大于原字符串
package stringlei; import java.util.Scanner; public class Demo3 { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner input = new Scanner(System.in); String tex1 = input.nextLine(); String tex2 = compressStr(tex1);//字符串进行压缩 String tex3 = getShorttex(tex1,tex2);//比较字符串,得到短的 System.out.println(tex3); } // /** * 比较两个字符串长度,返回短的字符串 * @param tex1 * @param tex2 * @return 短的字符串 */ private static String getShorttex(String tex1, String tex2) { if(tex1.length()<tex2.length()){ return tex1; }else{ return tex2; } } /** * * 实现字符串的压缩功能 * * @param tex 要压缩的字符串 * @return 压缩的字符串 */ private static String compressStr(String tex) { StringBuffer text2 = new StringBuffer(); char [] arr = tex.toCharArray(); for(int i=0;i<arr.length-1;i++){ int num = 1; for(int j=i+1;j<arr.length;j++){ if(arr[i] == arr[j]){ num++; } } int a = text2.indexOf(String.valueOf(arr[i])); if(a==-1){ text2.append(arr[i]); text2.append(num); } } return text2.toString(); } }4.写一个和 trim 功能相同的方法 思路: 1.定义两个变量,用来存储两个角标 2.分别从头和尾遍历字符串,直到找到第一个不为空格的字符
package stringlei; public class Demo4 { public static void main(String[] args) { // TODO 自动生成的方法存根 String s = " h hhh h "; String s2 = mytrims(s); System.out.println(s2); } /** * 实现一个类似trim的功能 * @param s * @return 删除了空格的字符串 */ private static String mytrims(String s) { int start = 0; int end = s.length()-1; while(start<=end && s.charAt(start) == ' '){ start++; } while(start<=end && s.charAt(end) ==' '){ end--; } return s.substring(start,end+1); } }