#20175310 《Java程序设计》第7周学习总结 本周博客: https://www.cnblogs.com/xicyannn/p/10705376.html
教材学习内容总结
这周学习了第八章,主要学习了常用的几个类,分别是:
String
类StringTokenizer
类Scanner
类StringBuffer
类Date
类与Calendar
类- 日期格式化
Math
类、BigInteger
类与Random
类- 数字格式化
Class
类与Console
类Pattern
类与Match
类
教材学习中的问题和解决过程
问题1: 在阅读课本P181页关于
public int indexOf (String s)
和public int lastIndexOf(String s)
的内容时看不懂书上的例子:问题1解决方案: 通过询问同学才知道原来在字符索引时空格也算是一个位置,所以索引
tom
字符串时,a
应该在第二位而不是第一位。
代码调试中的问题和解决过程
在做这周的结对项目时,遇到了许多问题,有很多都用到了这周第八章的知识点,比如8.2中讲到的StringTokenizer
类在拆分分数的后缀式时就有用到
问题2: 在写代码时发现需要把中缀式转成后缀式后,将每个分数和运算符拆开,下图中等号左边表示系统自动生成的中缀式,右边是后缀式。可以看出中缀转后缀并没有出错,问题在于后缀式的第一项是1/6,第二项是1/7,通过
StringTokenizer
方法拆分后缀式,但由于1/6和1/7中间没有任何标识符,因此系统自动把他们俩当成了一个整体,所以在之后的入栈时就会提示出错:Exception in thread main java. lang NumberFormatException: For input string: 1/61/7
,意思就是说数字格式异常:对于输入字符串:1/61/7
。 ,问题2解决方案: 通过在分数以及运算符前后加空格作为间隔的标志,下面是在运算符后面加空格的代码:
if (j <= a) { fuhao k = new fuhao(); //声明类fuhao的对象k char q = k.yunsuanfu(); //产生一个运算符q Question1 = Question1 + zi + '/' + mu +" " +q+" "; //将生成的随机数和随机符号存入Question1中 } else { Question1 = Question1 +zi + '/' + mu; //将生成的随机数存入Question1中 }
下面是在分数后面加空格的代码:
if(ch >= '0' && ch <= '9' && ch1 == '/'&&ch2>='0'&&ch2<='9') {// 如果是分数,则直接输出
out+=ch;
out+=ch1;
out+=ch2;
out+=" ";
continue;
}
修改这两部分的代码后,运行结果如下图。可以看到不管是运算符还是分数,中间都有空格间隔。
- 问题3: 当分母为1时显示的不是整数形式而是
x/1
(x是大于1的整数),并且判断对错时,对于输入的整数答案判定为错误,只有输入x/1
才显示正确。
- 问题3解决方案: 在输出结果的时候加一个判断,当分子为0时,结果为0,分母为1时结果为分子,其余情况正常输出,代码如下:
i
f (numerator == 0) {
result = "0";
}
else {
if (denominator == 1)
result = numerator + "";
else
result = numerator + "/" + denominator;
}
return result;
代码托管
学习进度条
代码行数(新增/累积)
博客量(新增/累积)
学习时间(新增/累积)
重要成长
目标
5000行
30篇
400小时
第一周
6/6
2/2
30/30
第二周
625/631
3/5
35/65
第三周
660/1291
2/7
38/103
第四周
972/2263
2/9
30/133
第五周
399/2662
3/12
32/165
第六周
1342/4004
3/15
35/200
第七周
1341/5345
2/17
35/235