关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
上个月关门了。
改进这个问题
我想在每个方法中全局地访问节点[i],我错在哪里?
class file{
private static java.io.File file;
private static BufferedReader reader;
private static int[] nodes;
static {
try {
file = new java.io.File("/home/madhu/Desktop/readData.txt");
reader = new BufferedReader(new FileReader(String.valueOf(file)));
String totalNode = reader.readLine();
String[] strs = totalNode.trim().split(",");
for (int i = 0; i < strs.length; i++) {
int a = Integer.parseInt(strs[i]);
nodes[i]=a;
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static void level() {
System.out.println(nodes[2]);
}
public static void main(String[] args) throws Exception {
System.out.println(nodes[2]);
}
}
readdata.txt包含:
1,2,4
我想在进一步的计算中使用单个数字,那么如何独立地访问它呢?
2条答案
按热度按时间a2mppw5e1#
未创建数组
你从来没有创建过数组。把数组想象成一个有插槽的容器,就像一个有架子的橱柜。架子在你装满之前是空的。但你的代码从来没有建立过内阁。你的代码只表达了一个愿望,希望在某个时候拥有一个内阁,但从来没有得到左右,使说内阁。
你的台词
private static int[] nodes;
声明变量nodes
准备好并愿意在构建某个数组时引用(指向)该数组。要建造那个柜子,那个阵列
new int[] {…}
.将代码更改为以下内容:
…或者这个…
为了简单起见,我忽略了您的文件加载代码,因为这似乎与您的问题的意图无关。我将扫除使用前三思而后行的常规警告
static
,我不会解释如何使用static
不是面向对象的,并且充满了误用的风险。gupuwyp22#
你的代码从不初始化
int[] nodes
. 因此,您需要在for循环之前对其进行初始化,如下所示:因此,更新后的静态块应如下所示: