学号 20175223 《Java程序设计》第 6 周学习总结
目录
教材学习内容总结
- 第七章要点:
- 要点1:内部类;
- 要点2:匿名类:和子类有关、和接口有关;
- 要点3:异常类:try-catch 语句、自定义异常类;
- 要点4:断言、应用举例。
- 第十章要点:
- 要点1:File 类;
- 要点2:文件字节输入流、输出流、;
- 要点3:缓冲流、随机流、数组流、数据流、对象流;
- 要点4:序列化与对象克隆;
- 要点5:使用 Scanner 解析文件;
- 要点6:文件对话框;
- 要点7:带进度条的输入流;
- 要点8:文件锁、应用举例。
代码调试中的问题和解决过程
1. 编译运行时,跳过 Scanner.nextLine() 语句。
编译如下代码
import java.util.Scanner;
public class test {
public static void main(String args[]) {
System.out.println("Input the number of books:");
Scanner reader = new Scanner(System.in);
int num = reader.nextInt();
System.out.println("Input the book "+num+" information of bookName");
String name = reader.nextLine();
System.out.println("Input the book "+num+" information of bookWriter");
String writer = reader.nextLine();
}
}
结果如下:
Input the number of books:
1
Input the book 1 information of bookName
Input the book 1 information of bookWriter
- 问题1解决方案:
原因是:nextInt()结束的回车字符被nextLine()读取了,导致接下来的 name 无法录入,跳过一行,但下面的 writer 却能正常读写。
在第 5 行和第 6 行代码之间添加一条语句,即可正常读写:
reader.nextLine();
作用:吸收上个输入最后的回车字符(如下一个问题的 6、7 行代码)。
2. 提示 NullPointerException 错误。
代码如下:
import java.util.Scanner;
class Book {
String bookName;
public void setBookName(String bookName) {
this.bookName = bookName;
}
}
public class test {
public static void main(String args[]) {
System.out.println("Input the number of books:");
Scanner reader = new Scanner(System.in);
int num = reader.nextInt();
reader.nextLine();
Book book[] = new Book[3]; //[代码]
System.out.println("Input the book "+num+" information of bookName");
String name = reader.nextLine();
book[0].setBookName(name);
}
}
结果报错如下:
Input the number of books:
1
Input the information of bookName
Exception in thread "main" java.lang.NullPointerException
at Bookshelf.main(test.java:19)
Process finished with exit code 1
问题分析:
上述代码看似没有什么问题,却提示 NullPointerException 。空指针异常,也就是说,book[0], book[1], book[2]都是没有被初始化的。
Java在数组的定义中并不为数组元素分配内存,因此[]中不需指明数组长度,而且对于如上定义的数组是不能引用的,必须经过初始化才可以引用。
第 16 行代码Book book[] = new Book[3];实际上并没有为数组元素分配内存。问题2解决方案:
为空指针分配内存:
//在第 16 行和第 17 行间,添加如下代码
for (int i=0; i<num; i++) {
book[i] = new Book();
}
[代码托管]
- 代码提交过程截图:


- 代码量截图:

学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 322/322 | 1/1 | 23/23 | |
| 第二周 | 520/842 | 3/4 | 25/48 | |
| 第三周 | 458/1300 | 2/6 | 16/64 | |
| 第三周 | 914/2214 | 2/8 | 21/85 | |
| 第四周 | 685/2899 | 1/9 | 18/103 | |
| 第五周 | 663/3562 | 2/11 | 20/103 |
计划学习时间:20小时
实际学习时间:20小时
参考资料
学号 20175223 《Java程序设计》第 6 周学习总结的更多相关文章
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 学号20145303 《Java程序设计》第一周学习总结
学号20145303 <Java程序设计>第一周学习总结 教材学习内容总结 *dos命令行: dir:列出当前目录下的文件及文件名 md:创建目录 rd:删除目录.为空时文件夹(文件夹为空 ...
- 学号20145322 《Java程序设计》第一周学习总结
学号20145322 <Java程序设计>第一周学习总结 教材学习内容总结 Java诞生于Sun公司,于1998年12月4日发布J2SE,约以两年为一周期推出重大版本更新. 2010年Or ...
- 201521123061 《Java程序设计》第九周学习总结
201521123061 <Java程序设计>第九周学习总结 1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1 ...
- 201521123038 《Java程序设计》 第九周学习总结
201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...
- 201521123045 <java程序设计>第11周学习总结
201521123045 <java程序设计>第11周学习总结 1. 本周学习总结 2. 书面作业 2. 书面作业 Q1.1.互斥访问与同步访问完成题集4-4(互斥访问)与4-5(同步访问 ...
- 20175313 张黎仙《Java程序设计》第九周学习总结
目录 学号 20175313 <Java程序设计>第九周学习总结 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 学号 20 ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...
- 2018-2019-3《Java程序设计》第二周学习总结
学号20175329 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结 第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨 ...
- # 20175329 2018-2019-2 《Java程序设计》 第二周学习总结
学号 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结 第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨论一下JAVA与 ...
随机推荐
- tensorbordX使用
安装: pip install tensorflow-1.7.0 pip install tensorbord pip install tensorbordX 启动 tensorboard --log ...
- EM公式推导
纯手写,字很丑,人也很丑.. E步公式是怎么来的呢?推导步骤如下, EM算法核心思想是先给定初始θ,求样本X,和隐变量z的期望(实际上是个函数),可以画一个曲线,M步:然后不断滑动θ,找到使得期望最大 ...
- linux——文件操作
1.创建文件夹 mkdir /myFolder 2.创建文件 touch hello.txt 3.复制文件 cp [-adfilprsu] 源文件 目标地址 4.移动 mv 源地址 目标地址 5.正向 ...
- firewall配置
词解释 在具体介绍zone之前学生先给大家介绍几个相关的名词,因为如果不理解这几个名词zone就无从入手. target:目标,这个前面学生也已经给大家介绍过了,可以理解为默认行为,有四个可选值:de ...
- Django框架简介-路由系统
2.2 路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. 你就是 ...
- 搭建k8s(一)
安装VMWare VMWare官网地址 点击下载-->WorkStation Pro-->点击linux免费试用版 下载安装完成后,创建一个虚拟机,去centos官网找到centos7is ...
- java8实战二------lambda表达式和函数式接口,简单就好
一.Lambda 可以把Lambda表达式理解为简洁地i表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表.函数主体.返回类型,可能还是一个可以抛出的异常列表. 听上去,跟我们用的匿名类,匿名 ...
- 合并两个 Lambda 表达式
概述 在开发工作中,有些时候需要对一些增删改查进行封装(用 Lambda 表达式来筛选数据),但是又有一部分条件总是相同的,对于相同的部分可以直接写到方法里,而不同的部分作为参数传进去. 定义扩展方法 ...
- python 几分钟前,几小时前,几天前转为时间戳
一开始我是这么做的 import time import datetime def conv_time(t): min = re.findall('\d+', t)[0] if u'分钟' in t: ...
- 基于VC++的网络扫描器设计与实现
本文正文其实是自己的毕业论文,现在搬上来有两个原因. 一是之前大学的文档都放在百度网盘上,大概去年的时候百度网盘改版搞得不太稳定,文件夹移动次数一多里边就会有一些文件丢失了,也没有很在意.但前几天看申 ...