心得体会:
1. 发现问题
// StringBuffer的方法实现给钱加逗号
String money = "12445345456672326.2345";
// 12,445,345,456,672,326.2345
这道题使用了 StringBuffer的 insert().indexOf()方法,结合循环来完成循环移动, 来将这个 , 放到指定的位置,写起来发现不是很流畅,发现了各种问题
2. 解决问题
通过老师的思路,更好的理解了解决问题的编程思想,编程就是将思路转换成代码的过程。可能你一开始就有了一个思路,但是为什么写出来的代码没有老师那么简洁,高效,逻辑清晰,发现原因:1.自己对于前面的循环并没有一个个更好的理解 2.将思路转换成代码缺少灵活度
3. 反思自身提升编程能力
3.1. 模仿老师写的代码
老师的思路:化繁为简,先简后繁
1.获取索引 . 的索引 2.先尝试着自己去写一个基本的移动 ,然后将,插入使用 Insert() 方法,3.使用循环 4.优化代码
// StringBuffer的方法实现给钱加逗号
String money = "12445345456672326.2345";
// 转成StringBuffer
StringBuffer sb = new StringBuffer(money);
// 1.找到. 的位置
int index = sb.indexOf(".");
// 2.往前移动三个位置的地方来插入 , 完成一个最基本的插入
sb= sb.insert(i - 3, ",");
System.out.println(sb);
如果字符的长度多了以后,就需要使用循环来加 , 于是自己在这里就是容易卡壳的地方,脑子里会冒出很多思路,想使用各种循环while() for()写出来就会产生各种 bug
自己这样写
// 将string ==>StringBuffer
StringBuffer phoneStr = new StringBuffer(priceStr);
// 给字符加,
// 获取到.的位置
int index = phoneStr.indexOf(".");
// 找到第一个位置
index-=3;
// 索引不小于0 就循环
while (!(index <= 0)) {
// 插入
phoneStr.insert(index, ",");
// 下一次移动
index -= 3;
}
老师这样写
// 使用 循环
for (int i = index-3;i>0;i-=3) {
sb.insert(i,",");
}
总是觉得没老师的思路清晰将问题复杂化了,于是我自己思考了一会研究了 以前总觉得简单的 for 循环 while 循环的语法 又发现了一些新东西
3.2 自己的思考
对这句话的理解 ====>思路翻译成代码
// 3. 如果数据较长时候,就需要循环来实现
// 思路:找到第一个位置,从第一个插入, 的地方开始,每次移动三个位置来插入,当位置变成了0停止、
// for循环 初始值,判断,循环器
// for循环的特点是 先做再移动,所以第一个位置要人为的找到做完了,然后再移动,然后再做
// 所以 初始化 i = index -3; 根据不同的思路选用不同的循环
for (int i = index-3;i>0;i-=3) {
sb.insert(i,",");
}
关于要怎么将 , insert 过去 ,要使用两种循环,for() while 先移动再插入,还是先插入再移动,不同的算法,代码也会写出不一样的效果,所以一开始就要想好确定一种思路再转换成代码,然后再优化,经量没想好的思路就下手写,反而达不到想要的效果。
3.2.1 使用 while() 循环
先移动再插入
// while循环实现 先移动再做
while (true){ // 不知道括号写什么,先true
// 1.先移动
index-=3;
// 2.再插入
sb.insert(index,",");
// 3.判断下一次index是否大于0,不大于0就break跳出
if (!(index-3>0)){
break;
}
}
优化
// 优化 将判断放到 while括号中
while (index-3>0){
// 先移动
index-=3;
// 再插入
sb.insert(index,",");
// 判断下一次index是否大于0,不大于0就跳出
// if (!(index-3>0)){
// break;
// }
}
先插入再移动
while循环实现
// 首先找到第一个位置
index-=3;
// 判断跳出循环在括号里写
while (index>0){
// 先插入
sb.insert(index,",");
// 移动
index-=3;
}
4.总结:
通过这个题我更好的理解了写代码的思路,不要小看任何一种简单的语法,更应该多思考解决问题背后的思路,语法只是工具,在将思路翻译成代码的过程中,还要更好的思考这个语法适合什么样的场景,平时要多注重思考,还有有什么更好的思路,更好的优化,一开始没有更好的思路的情况下,多去学习别人的思路,临摹代码,根据别人写的,不看别人代码的情况下,自己再根据思路自己再去复现代码,多积累思想,慢慢自己应该就能写出更优美的,更高效的语句。