首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么Java会在这里抛出NullPointerException?

为什么Java会在这里抛出NullPointerException?
EN

Stack Overflow用户
提问于 2015-05-31 23:21:18
回答 5查看 580关注 0票数 1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Test {

    public int [] x;

    public Test(int N)
    {
       int[] x = new int [N];
       for (int i=0;i<x.length;i++)
       {
           x[i]=i;
           StdOut.println(x[i]);
       }
    }


    public static void main(String[] args) { 

        String path = "/Users/alekscooper/Desktop/test.txt";
        In reader = new In(path);
        int size=reader.readInt();
        StdOut.println("Size = "+size);

        Test N = new Test(size);
        StdOut.println(N.x[3]);

    }

    /* ADD YOUR CODE HERE */

}

大家好。我正在通过阅读Robert关于算法的书来学习Java,例如,我正在使用他的库,比如StdOut。但问题是关于Java的。我不明白为什么这里的Java会抛出一个NullPointerException。总的来说,我知道这意味着什么,但我不知道为什么会出现在这里,因为我认为我在做的是:

  1. 从文件中读取整数--类Test中数组的大小。在我的测试示例size=10中,不会出现超出约束的类型。
  2. 打印出来。
  3. 创建类型测试的对象N。在这个对象中,我想我创建了一个大小数组,我刚刚从文件中读取了这个数组。为了好玩,我初始化它从0到大小-1,并打印它。到目前一切尚好。
  4. 这里是一切开始的地方。因为我的类是公共的,而且我已经运行了构造函数,所以我想我有一个对象N,它作为一个属性,具有带有size元素的数组x。然而,,例如,当我试图处理x时, StdOut.println(N.x3); Java抛出NullPointerException。

为什么会这样呢?请帮忙,非常感谢您的时间。

EN

回答 5

Stack Overflow用户

发布于 2015-05-31 23:30:33

您所做的被称为跟踪--您用局部变量x跟踪了字段x。所以你要做的就是避免这样做:

int[] x = new int [N];是错误的,如果您希望您的字段初始化而不是局部变量,那么您可以执行如下操作:x = new int [N];获取更多信息,请阅读this

票数 9
EN

Stack Overflow用户

发布于 2015-05-31 23:28:09

将构造函数的第一行更改为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int[] x = new int [N];

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = new int [N];

应该管用的..。

实际上,在构造函数中,当您说int[] x时,它正在创建多一个局部变量,而不是将数据设置为公共变量x.如果从构造函数的第一行中删除int[],那么它将初始化公共变量&您将能够在main()方法中打印它们

票数 4
EN

Stack Overflow用户

发布于 2015-05-31 23:25:32

public Test(int n)**:**内部的

变化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int[] x = new int [N]; // Creating a local int array x

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = new int [N]; // Assigning it to x
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30567802

复制
相关文章
在MapReduce中利用MultipleOutputs输出多个文件
用户在使用Mapreduce时默认以part-*命名,MultipleOutputs可以将不同的键值对输出到用户自定义的不同的文件中。
星哥玩云
2022/07/03
2.1K0
在MapReduce中利用MultipleOutputs输出多个文件
让Pig在风暴中飞驰——Pig On Storm
1以PigOnStorm直面实时应用开发面的挑战 在TRC(Tencent Realtime Computing)系统中TDProcess负责为各个应用提供实时计算的能力和服务,Storm是TDProcess的核心部件,虽然Storm已经成为开源流式计算领域的实际标准,但其生态系统远没有Hadoop完善,在Storm之上没有像Hive、Pig这类解放应用开发人员的效率提升工具,所以当你决定使用Storm来实现某个应用时,必须首先去熟悉Storm的原理以及API,然后才能基于API编写程序。 熟悉Hadoop
腾讯大数据
2018/01/26
8450
pig中load文件时报错
grunt> A=load 'data.txt' as (name: chararray, id: int, age: int);  2012-09-11 18:06:32,072 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1000: Error during parsing. Encountered " <PATH> "A=load "" at line 3, column 1. Was expectin
闵开慧
2018/03/30
9750
python将多个文件内容输出到一个文件中
生成多个文件脚本 #coding=utf-8 #import os #import sys sql1Script = ''' use scrm_%s; -- 公司code需替换为相应公司的code CREATE OR REPLACE VIEW `scrm_crm_contract` AS SELECT * FROM scrm_jishufuwu.`scrm_crm_contract` WHERE `company_code` = '%s'; -- 更新数据库版本. INSERT INTO gf_db_v
章工运维
2023/05/19
1.2K0
vim打开多个文件、同时显示多个文件、在文件之间切换 打开多个文件:
1.vim还没有启动的时候: 在终端里输入 vim file1 file2 ... filen便可以打开所有想要打开的文件 2.vim已经启动 输入 :open file 可以再打开一个文件,并且此时vim里会显示出file文件的内容。
sunsky
2020/08/19
15.4K0
C++ 中的随机标头系列1
开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
鲸落c
2022/11/28
1.4K0
C++ 中的随机标头系列1
避免在 JS 中过多使用 IF 语句优化技巧
最近在重构代码时,我发现早期的代码使用太多的 if 语句,其程度是我从未见过的。这就是为什么我认为分享这些简单的技巧是非常重要的,这些技巧可以帮助我们避免过多的使用 if 语句。
前端小智@大迁世界
2020/10/26
2.3K0
使用结构化的标头字段改善HTTP
原文 / https://www.fastly.com/blog/improve-http-structured-headers
LiveVideoStack
2020/08/04
6660
通过主机标头的 XSS
在 IE 中处理重定向时有一个有趣的错误,它可以将任意字符插入到 Host 标头中。假设您有以下 http 响应:
Khan安全团队
2022/01/11
1.6K0
通过 HTTP 标头的 XSS
在某些情况下,在应用程序的一个 HTTP 标头中传递的信息未正确清理,并在请求页面的某处或另一端输出,从而导致 XSS 情况。
Khan安全团队
2022/03/09
2.1K0
设置和获取HTTP标头
%Net.HttpRequest的以下每个属性都包含具有相应名称的HTTP标头的值。如果不设置这些属性,则会自动计算它们:
用户7741497
2022/06/09
2.5K0
常见的HTTP标头介绍
在网络爬虫的实践过程中会遇到诸多挑战,被屏蔽是最令人头疼的一个。幸好,有许多技术可以帮助您免受IP屏蔽带来的影响,这其中,HTTP标头(HTTP Headers)的使用和优化是最有效的方法之一,但它往往也是最被大家低估的方法之一。
用户7850017
2022/05/07
1.1K0
常见的HTTP标头介绍
使用SharpZipLib压缩打包多个内存中的文件
SharpZipLib是C#写的开源压缩解压缩组件,最近项目上遇到一个需求:根据用户选择的项目生成CSV文件并下载,后来改为同时生成2个CSV文件下载下来。想到的解决办法就是将2个CSV文件打包成一个Zip文件,然后供用户下载。
深蓝studyzy
2022/06/16
2.3K0
pig基本语法——输入输出存储查看结构
http://pig.apache.org/docs/r0.17.0/basic.html
Java架构师必看
2021/05/14
4920
使用VIM搜索多个文件[通俗易懂]
使用vim可以方便的搜索多个文件,这个时侯需要使用的命令是:vimgrep。vimgrep的命令格式是:
全栈程序员站长
2022/11/09
2.1K0
Python中跨越多个文件使用全局变量
这个琐碎的指南是关于在 Python 中跨多个文件使用全局变量。但是在进入主题之前,让我们简单地看看全局变量和它们在多个文件中的用途。
Python学习者
2023/10/20
8170
如何使用OpenCV在Python中访问IP摄像头
首先,必须找出网址流是什么。通过在构造函数中提供摄像机的网址流,可以在OpenCV中访问IP摄像机cv2.VideoCapture。可以使用某些网络扫描实用程序(例如在linux上的arp-scan)找到摄像机的IP地址。网址进一步的细节,如Protocol,Credentials和Channel应该可以在相机说明书或软件/手机应用程序中找到。我们通过在网络上搜索相机的型号来找到相机的网址流。
小白学视觉
2020/09/14
6.7K0
使用nano在Linux中编辑文件
GNU nano,简称nano,是大多数Linux发行版的基本内置编辑器。GNU nano是一个小巧友好的文本编辑器. 与基本的文本编辑相比,nano提供许多额外的特性,例如:交互式的查找和替换,定位到指定的行列,自动缩进,特性切换,国际化支持,以及文件名标记完成。本教程中,我们将介绍一些帮助您入门的基本知识。
风研雨墨
2018/08/17
7.3K0
点击加载更多

相似问题

在Pig中处理tar标头

11

在多个R输出文件中写入标头

10

避免在.h文件中包含标头

50

在输出文件中写入elf标头

11

希望避免在单击标头时执行多个操作

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文