zoukankan      html  css  js  c++  java
  • 20162311 2016-2017-2 《程序设计与数据结构》第九周学习总结

    20162311 2016-2017-2 《程序设计与数据结构》第九周学习总结

    教材学习内容总结

    • 使用XAMPP建立与数据库连接
    • 创建并修改数据库表
    • Linux下安装MySQL数据库
    • 一些简单的SQL语句

    教材学习中的问题和解决过程

    • 问题1:学习实验楼的MySQL基础教程时,按照教程上的步骤在自己的虚拟机上安装MySQL,装好之后启动MySQL,输入命令mysql -u root却出现错误了
    • 解决方案:关于这个问题,我问了王老师。王老师说他也遇到过这个问题,让我百度搜索MySQL 教程
      在命令mysql -u root之后加一个参数-p,然后输入密码就可以了。

      后来我又查了一下-u-p的意思

    代码调试中的问题和解决过程

    • 问题1:在做老师布置的mini dc作业时,把MyDC类写好了,编译却出错了

      token是String类型,而evalSingleOp方法的第一个参数是Char类型

    • 解决方案:我询问了马平川同学,他告诉我一个方法toCharArray(),这个方法可以把字符串转换为一个新的字符数组。我查了一下API文档

      于是我把第一个参数改成token.toCharArray()[0],即转成字符数组后,取第一个元素,因为token变量只有一个字符。改完之后就能正常编译运行了。

    • 问题2:按照老师要求,用分支语句写一个简单的计算器,源代码如下

    public class Calc {
          public static void main(String [] args) {
    
              int result = 0;
    
              if (args.length != 3) {
                  System.out.println("Usage: java Calc operato1 operand(+ - * / %) operator2");
                  }
              else if (args[1].equals("+")){
                   result = Integer.parseInt(args[0]) + Integer.parseInt(args[2]);
                   }
              else if (args[1].equals("-")){
                   result = Integer.parseInt(args[0]) - Integer.parseInt(args[2]);
                   }
              else if (args[1].equals("*")){
                   result = Integer.parseInt(args[0]) * Integer.parseInt(args[2]);
                   }
              else if (args[1].equals("/")){
                   result = Integer.parseInt(args[0]) / Integer.parseInt(args[2]);
                   }
              else if (args[1].equals("%")){
                   result = Integer.parseInt(args[0]) % Integer.parseInt(args[2]);
                   } 
              System.out.println(args[0]  + args[1]  + args[2] + " = " + result);
     
     }
    }
    

    能通过编译,计算加、减、除和取余都正常,但计算乘的时候结果总是0

    • 解决方案:我问了老师,老师告诉我args[1].equals("*")这里比较时,*会被看成通配符,这样就不会执行后面的语句,result的值也一直是0,可以用字母“x”代替。我改了之后就没问题了。不过分支语句不止if...else,还有switch...case,如果我用switch...case来写,是不是就可以避免这个问题呢?于是我试了一下
    public class NewCalc{
      public static void main (String [] args){
        int result = 0;
        final char ADD = '+';
       
        final char SUBTRACT = '-';
        
        final char MULTIPLY = '*';
       
        final char DIVIDE = '/';
    
        final char REMAINDER = '%';
        if (args.length != 3){
          System.out.println("Usage: java Calc operator1 operand(+ - * / %) operator2");
          }
        else switch (args[1].toCharArray()[0]){
             case ADD:
                  result = Integer.parseInt(args[0]) + Integer.parseInt(args[2]);
                  break;
             case SUBTRACT:
                  result = Integer.parseInt(args[0]) - Integer.parseInt(args[2]);
                  break;
             case MULTIPLY:
                  result = Integer.parseInt(args[0]) * Integer.parseInt(args[2]);
                  break;
             case DIVIDE:
                  result = Integer.parseInt(args[0]) / Integer.parseInt(args[2]);
                  break;
             case REMAINDER:
                  result = Integer.parseInt(args[0]) % Integer.parseInt(args[2]);
                  break;
        }
        System.out.println(args[0]  + args[1]  + args[2] + " = " + result);
      }
    }
    

    可是仍然不行,我又问了同学才知道,原来在命令行里输入*都会被当成通配符,无法与称号比较,只能用字母“x”代替了

    代码托管

    (statistics.sh脚本的运行结果截图)

    上周考试错题总结

    • 错题1:
    
    test.txt 中的内容是:
    
    No Name Mark Percent 
    01 tom 69 91 
    02 jack 71 87 
    03 alex 68 98
    把第四列提取出来的Linux命令是:
    A .cut -f 1 test.txt
    B .cut -f 2 test.txt
    C .cut -f 3 test.txt
    D .cut -f 4 test.txt
    正确答案: D
    

    分析:cut 命令中第n列不是从0开始计数的。

    • 错题2:
    sort.txt中的内容是:
    aaa:10:1.1 
    ccc:20:3.3 
    ddd:40:4.4 
    bbb:30:2.2 
    eee:50:5.5
    用“sort  -t: -nk2 sort.txt”排序后的第二行是:
    A .aaa:10:1.1
    B .ccc:20:3.3
    C .ddd:40:4.4
    D .bbb:30:2.2
    E .eee:50:5.5
    正确答案: B 
    

    分析:对每二列按数字升序排序

    • 错题3:
    If an exception is not caught, a program will __________________________ (如果不捕获异常,程序将会____ ).
    A .not compile(不编译)
    B .terminate abnormally(异常终止)
    C .print a message and continue executing(输出消息并继续执行)
    D .all of the above(以上情况都会发生)
    E .neither a, b nor c(abc都不对)
    正确答案: B
    

    分析:如果一个异常没有被catch块处理,那么程序会异常终止

    • 错题4:
    The getMessage method of the Exception class prints out the stack trace, which helps the user to track down the source of the exception(Exception类的getMessage方法输出栈跟踪信息,有助于找到产生异常的源).
    A .true
    B .false
    正确答案: B  
    

    分析:printStackTrace方法打印栈跟踪

    • 错题5:
    Which of the following file streams should be explicitly closed to ensure that written data is properly retained(下面哪个文件输入流应该显式关闭,以确保数据能正确保存下来)?
    A .output
    B .input
    C .error
    D .writable
    E .readable
    正确答案: A 
    

    分析:输出文件流应该使用关闭方法显式关闭,以便所有数据被正确保留

    结对及互评

    点评过的同学博客和代码

    思考

    本周学习的数据库感觉和之前学的内容不大一样,不仅仅是敲一些代码。由于是第一次接触数据库,所以有很多地方都不懂,哪怕老师给了一些教程,也无法完全理解。数据库的学习应该不是一个短暂的过程。老师说这周之后就要开始尝试做一些项目,我想一定会有用到数据库的地方,到时候边做边学,加深理解,应该效果要比只看老师的教程耀好一些。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 113/113 1/1 10/10
    第二周 294/407 1/2 15/25
    第三周 433/840 1/3 15/40
    第四周 1169/2009 2/5 30/70
    第五周 825/2834 1/6 15/85
    第六周 331/3165 1/7 13/98
    第七周 738/3903 2/9 22/120
    第八周 428/4331 1/10 20/140
    第九周 367/4698 1/11 15/155
    • 计划学习时间:15小时

    • 实际学习时间:15小时

    • 改进情况:数据库不是一周就能解决的,这周花的时间有些少。下周开始不用写博客了,应当把多出的这部分时间用来深入学习数据库,感觉这部分知识挺重要的。

    参考资料

  • 相关阅读:
    课程设计第二十二天,09.09
    课程设计第二十一天,09.08
    课程设计第二十天,09.07
    课程设计第十九天,09.06
    课程设计第十八天,09.05
    课程设计第十七天,09.04
    数词、介词、连词
    形容词、副词
    情态动词、非谓语动词、虚拟语气、独立主格结构
    词法、句法、短语、从句和句子、主谓一致、特殊句式
  • 原文地址:https://www.cnblogs.com/-zzr-/p/6761436.html
Copyright © 2011-2022 走看看