zoukankan      html  css  js  c++  java
  • 20175310 《Java程序设计》第7周学习总结

    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
  • 相关阅读:
    各类Http请求状态(status)及其含义 速查列表 xmlhttp status
    Microsoft Visual Studio 2010 正式版下载[含旗舰版序列号](中、英文版)
    【分享】开源或免费的ASP.NET web应用列表
    线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析
    Asp.Net中多语言的实现
    Oracle 数字与空值的排序问题
    新版微软一站式示例代码库 6月2日更新下载。
    .NET反射机制简介
    Decimal与double类型误差
    用动态菜单增强.NET应用程序
  • 原文地址:https://www.cnblogs.com/xicyannn/p/10685355.html
Copyright © 2011-2022 走看看