学号 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与 ...
随机推荐
- node+ejs模板引擎的应用
前言: 最近在开发一个关于后台管理系统的基础开发平台,解释一下就是不管什么管理系统都有一些相同的功能,但是又有一些细节不一样,这个基础平台就是实现对于基础功能可以进行快速开发,主要有自定义的生成功能代 ...
- js对象跟数组多层嵌套,检测没有此数据就添加有则不添加以及超过限制条件删除操作
例如你需要这样格式的数据: [{"name":"合肥市","arrey":[{"lat":"31.862323 ...
- JAVA-重载(overload)和重写(overrite)
1.重载发生在同一个类中.有多个方法名相同,但是参数列表不同(包括参数个数和参数类型),和返回值无关,权限修饰符也无关. 2.重写(即覆盖)发生在子类和父类中.子类和父类的方法名.参数列表相同:子类的 ...
- Docker镜像加速器配置
一.为什么要配置Docker镜像加速器 因为我们默认pull的docker镜像是从Docker Hub来下载,由于其服务器在国外,速度会比较慢.因此我们可以配置成国内的镜像仓库,这样可以加速镜像的上传 ...
- hadoop之数据压缩与数据格式
* 注:本文原创,转载请注明出处,本人保留对未注明出处行为的责任追究. a.数据压缩 优点: 1.节省本地空间 2.节省带宽 缺点: 花时间 1.MR中允许进行数据压缩的地方有三个: 1)input起 ...
- LINQ to Entities 不识别方法“System.DateTime AddDays(Double)
今天本想在linq里按照时间筛选一下超时的数据,一共两个字段FeedBackTime(计划反馈时间).EndTime(实际反馈时间).需求是这样的,查找数据库里所有EndTime大于FeedBackT ...
- 8.1 GOF 设计模式:关于设计模式
关于设计模式…Design Pattern 追求永恒的美1.1 “模式”一词的起源 “每个模式描述了: 一个在我们周围反复出现的问题, 然后是针对这个问题的解决方案. 这样,其他人可以无数次地反复 ...
- 每日算法---Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...
- Maven中基于POM.xml的Profile来动态切换配置信息
[转载:https://blog.csdn.net/blueheart20/article/details/52838093] 1. Maven中的profile设置 Maven是目前主流的项目代码结 ...
- c# winform Chart Pie 中若X轴数据为字符串时,#VALX取值为0
https://q.cnblogs.com/q/83848/ 在winform程序中用自带的Chart进行画图表时,若画饼图,其中X轴数据为字符串,这时候如果想设置Label值的格式为#VALX:#V ...