前言

1255: 打怪升级(Java),写这个题目程序的时候,控制台提示如下错误:

Exception in thread "main" java.lang.NullPointerExceptionat oj1255.Main.input(Main.java:41)at oj1255.Main.<init>(Main.java:24)at oj1255.Main.main(Main.java:52)

然后我调试才发现,这个对象数组居然是null的,这我就不理解了,我明明写了new的……


于是就有了这篇博客。为了突出重点,就重新写了个类,因此直接看下面的即可,不用管前言。

参考博客

跳币上山岭的博客

示例1

package error.inner;// 外部类
public class Outer {// 内部类private class Inner {public int x;    // 属性}private Inner[] test; // 内部类对象数组// 构造方法public Outer() {int i;test = new Inner[2];    // 创建实例for(i = 0; i < 2; i++) {test[i].x = i;        // 赋值}// 输出内部类属性值for(i = 0; i < 2; i++) {System.out.println(test[i].x);}}public static void main(String[] args) {new Outer();}}

乍一看,你可能会觉得这段代码没有任何问题,然而事实是在控制台丢一个Exception给你:

Exception in thread "main" java.lang.NullPointerExceptionat oj1255.Outer.<init>(Outer.java:18)at oj1255.Outer.main(Outer.java:27)

报错在第18行test[i].x = i;,于是进入了Debug模式
从红色箭头那一行,我们看到test[0]null的,到这里应该都明白了。
我们在第16行test = new Inner[2]的代码实际上只是申请的对象数组的大小,如下图所示:

堆内存里面并没有Inner的实例,因此我们需要加1行代码即可:

 // 构造方法public Outer() {int i;test = new Inner[2];  // 创建Inner数组for(i = 0; i < 2; i++) {test[i] = new Inner();   // 创建实例test[i].x = i;      // 赋值}// 输出内部类属性值for(i = 0; i < 2; i++) {System.out.println(test[i].x);}}

其他代码都不用改,这样一来,堆中就变成了了这样:
到这里在运行程序,就能正常输出想要的东西了:

小结

类的实例数组,每一个都需要单独创建。切记!切记!


转载于:https://www.cnblogs.com/wowpH/p/11060833.html

给内部类对象数组属性赋值时报错:Exception in thread main java.lang.NullPointerException...相关推荐

  1. 关于给java数组循环赋值时报错Exception in thread “main“ java.lang.ArrayIndexOutOfBoundsException: 5

    1.检查初始给数组分配的空间是否足够. 2查看循环限制是否超出限制, 假定数组为something, 数组长度为,something.length, 则指定循环限制要<something.len ...

  2. idea启动springboot时报错Exception in thread “main“ java.lang.UnsupportedClassVersionError:

    idea启动springboot时报错Exception in thread "main" java.lang.UnsupportedClassVersionError:org/s ...

  3. PI 使用JNative连接报错Exception in thread “main“ java.lang.IllegalStateException: JNative library not load

    使用java调用PiApiTools连接PI数据库报错: Exception in thread "main" java.lang.IllegalStateException: J ...

  4. IDEA运行redis多线程访问报错Exception in thread “main“ java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

    错误样式: 解决方案: 下载两个JAR包即可,同样的代码我在MyEclipse中运行就不报错,可能是IDEA缺少这两个JAR包吧,而ME本身自带了 托管下载地址:Central Repository: ...

  5. 【亲测有效】如何解决Hadoop运行jar包 报错Exception in thread “main“ java.lang.ClassNotFoundException: /input

    报错解释 字面意思就是我要运行这个jar但是Java无法找到主类 试错过程 你可能会在这里添加主类,但是还是不行.你可能没辙了. 解决办法 <build><finalName> ...

  6. SpringBoot—启动报错Exception in thread “main“ java.lang.ClassNotFoundException

    问题   在微服务启动时,日志排查发现无法启动. 解决方案 查看是否有xxxApplication类. 在pom.xml中查看中的内是否未加xxxApplication类.

  7. springboot启动报错Exception in thread “main“ java.lang.NoClassDefFoundError: io/netty/util/Timer

    原因: 这是缺少netty包的原因. 解决方法: 加入一下依赖: <!-- https://mvnrepository.com/artifact/io.netty/netty-all --> ...

  8. 报错Exception in thread “main“ java.lang.NoClassDefFoundError: javax/xml/bind/...

    项目一开始用的是jdk8,后来重新导入项目没有设置jdk的版本,idea自动设置jdk11 , jdk11没有javax.xml.bind 这个包,需要手动导包: <!-- https://mv ...

  9. list.add时报错:Exception in thread “main“ java.lang.UnsupportedOperationException

    用list.add()时报错: Exception in thread "main" java.lang.UnsupportedOperationExceptionat java. ...

最新文章

  1. Cygwin运行nutch报错:Failed to set permissions of path
  2. ASP.NET MVC:4 Ways To Prevent Duplicate Form Submission(转载)
  3. Golang 1.14 发布 | 云原生生态周报 Vol. 39
  4. 设计模式学习笔记——工厂(Factory)模式
  5. 利用VmWare_在本地内网IP地址段_搭建Centos7测试MyCat集群_亲测---Linux工作笔记044
  6. python 旋转矩阵_【每日算法Day 93】不用额外空间,你会旋转一个矩阵吗?
  7. 创建 macvlan 网络 - 每天5分钟玩转 Docker 容器技术(55)
  8. 使用layer 实现点击 显示大图
  9. 被动语态 动词的过去分词
  10. 计算机毕业设计php的人事档案管理系统
  11. shell命令进制转换
  12. python sasl_python用sasl的方式连接ldap提示
  13. 计算机专硕可以考事业编吗,专硕考事业编制遇冷
  14. 数组类型的修改和去重
  15. String ends with?
  16. 【报告分享】2020-2021年中国购物中心消费者洞察报告-中国连锁经营协会(附下载)
  17. EventSystems之鼠标相关事件(实现拖曳功能常用)
  18. Python学习初衷、心得
  19. 误删文件夹但是回收站没有找到怎么恢复?
  20. 西南科技大学Power OJ:实验六 C: 实验六-求X的N次方 求 Xn 。(使用子函数实现功能)

热门文章

  1. nodejs websocket server
  2. 查找数组连成环形的和最大的连续子数组
  3. 近期计算机视觉机器学习竞赛汇总
  4. 重磅推荐!日立开源语义分割数据集标注工具Semantic Segmentation Editor
  5. linux中的acl权限,linux中的权限和ACL
  6. 真香!腾讯再发阳光普照奖:每人100股,价值超6万!
  7. 收藏 | 深度学习检测小目标常用方法
  8. 太棒了!8 个流行的 Python 可视化工具包,你喜欢哪个?
  9. 【收藏】机器学习数据集列表:你需要收藏!
  10. TensorFlow中查看checkpoint文件中的变量名和对应值