学习了toString 还有Sting的一些方法 我滴天啊 感觉自己白学了 跟着视频操作有时候还运行不了 完全失去了自信 一上午就做了两道题还是不太明白 心里面超级不舒服 中午吃完饭回来就休息一会 然后睡醒感觉自己充满干劲 花费了两个小时终于给这四个基础题干完了 过程也很不容易 发现API真的很重要里面记录的方法太多太多 只等下去多练练手 熟悉代码 感悟就是 看不懂先不要着急 细致滤清思路跟着视频敲 再看一遍解析 根据自己代码注释意思 会有很大的收获 能明白不少
项目一 反转字符串单词
反转字符串单词
编写一个方法,将一段文本中的各个单词的字母顺序翻转, 例如:“I like writing code best”,将变成"I ekil gnitirw edoc tseb"
public class Trim {
public String mtTrim(String str){
//定义一前一后的下标
int index1 = 0;
int index2 = str.length()-1;
//遍历字符串 找到不是空格的字符为止
for (int i =0;i<str.length();i++){
if (str.charAt(i)!=' '){//下标为i的字符串char 不等于‘ ’时
index1 = i;//下标值为i
break;
}
}
for (int i = str.length()-1;i>=0;i--){
if (str.charAt(i)!=' ') {//从后往前遍历 直到出现不等于空格的字符串为止
index2 = i;
break;
}
}
return str.substring(index1,index2+1);//截取字符串
}
public static void main(String[] args) {
Trim t = new Trim();
String s = t.mtTrim(" afaffa fafa feff ");
System.out.println(s);
}
}
Trim()相同方法操作
写一个和 trim 功能相同的方法 思路: 1.定义两个变量,用来存储两个角标 2.分别从头和尾遍历字符串,直到找到第一个不为空格的字符
3.截取字符串
public class Trim {
public String mtTrim(String str){
//定义一前一后的下标
int index1 = 0;
int index2 = str.length()-1;
//遍历字符串 找到不是空格的字符为止
for (int i =0;i<str.length();i++){
if (str.charAt(i)!=' '){//下标为i的字符串char 不等于‘ ’时
index1 = i;//下标值为i
break;
}
}
for (int i = str.length()-1;i>=0;i--){
if (str.charAt(i)!=' ') {//从后往前遍历 直到出现不等于空格的字符串为止
index2 = i;
break;
}
}
return str.substring(index1,index2+1);//截取字符串
}
public static void main(String[] args) {
Trim t = new Trim();
String s = t.mtTrim(" afaffa fafa feff ");
System.out.println(s);
}
}``````
压缩字符串
字符串压缩:利用字符重复出现的次数,编写一种方法,实现基本的字符 串压缩功能。比如,字符串“aabccdd”会变成“a2b1c2d2”。若“压缩”以后的字 符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文 字母(a-z)
import java.awt.peer.CanvasPeer;
public class Compress {
public String compress(String s){
//如果空字符 空串处理
if (s.length() == 0){
return s;
}
StringBuffer newstr = new StringBuffer();
char ch =s.charAt(0);//要压缩的字符
int js = 1;//要压缩的字符个数
for (int i =1;i<s.length();i++){
if (ch==s.charAt(i)){//当前的字符与压缩字符相同
js++;//计数加一
}else{//不同字符记录次数后 重新计数1
newstr.append(ch);
newstr.append(js);
ch = s.charAt(i); //将新的字符赋给if循环继续
js = 1;
}
}
//获取最后一个字符重复数
newstr.append(ch);
newstr.append(js);
//最后对比大小 返回长度更短的字符串
return newstr.length()>s.length()?s:newstr.toString();
}
public static void main(String[] args) {
Compress c = new Compress();
String s = c.compress(" aabbbcdddddd");
System.out.println(s);
}
}
内容字符串存放方法中(内容有三个属性)
String s="name=王五 age=18 classNum=1101”; 将上面的字符串中包含的信息存放到 Student(里面有 name,age, classNum 三个属性)的对象中
public class Student {
private String name;
private Integer age;
private Integer classNum;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", classNum=" + classNum +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getClassNum() {
return classNum;
}
public void setClassNum(Integer classNum) {
this.classNum = classNum;
}
}
public class StudentTest {
public void test(){
Student stu = new Student();
String s = "name=王五 age=18 classNum=1101";
String[] arr = s.split(" ");//用空格分隔开
for (String s1 : arr) {
String[] temp = s1.split("=");
if (temp[0].equals("name")) {
stu.setName(temp[1]);
}else if(temp[0].equals("age")){
stu.setAge(Integer.valueOf(temp[1]));
}else if (temp[0].equals("classNum")){
stu.setClassNum(Integer.valueOf(temp[1]));
}
}
System.out.println("学生信息"+stu);
}
public static void main(String[] args) {
StudentTest test = new StudentTest();
test.test();
}
}