主Java中的全局变量
我有以下问题,并且知道为什么这会给我带来一些问题。我想知道是否有一种方法可以使用市场数组声明中的标记主Java中的全局变量,java,variables,Java,Variables,我有以下问题,并且知道为什么这会给我带来一些问题。我想知道是否有一种方法可以使用市场数组声明中的标记 public class Main { static final int[] market = new int[nmarked]; public static void main(String[] args) { int nmarked=3; } } 太多了 您可以在main方法中初始化数组(但不能是final): 您可
public class Main {
static final int[] market = new int[nmarked];
public static void main(String[] args) {
int nmarked=3;
}
}
太多了 您可以在main方法中初始化数组(但不能是
final
):
您可以在main方法中初始化数组(但不能是
final
):
你想通过N市场吗?你不需要通过它,使用:market.length 或:
你想通过N市场吗?你不需要通过它,使用:market.length 或:
这是一个更好的代码视图:
public static void main(String[] args) {
int [] market = new int[3];
for (int i=0;i<3;i++) market[i]=i;
Consume_order consume = Consume_order(market);
consume.start();
}
public class Consume_order extends Thread {
public run(){
private int[] array;
public Consume_order(int[] array) {
this.array=array;
}
System.out.println(array[0]);
}
publicstaticvoidmain(字符串[]args){
int[]市场=新int[3];
对于(int i=0;i这是一个更好的代码视图:
public static void main(String[] args) {
int [] market = new int[3];
for (int i=0;i<3;i++) market[i]=i;
Consume_order consume = Consume_order(market);
consume.start();
}
public class Consume_order extends Thread {
public run(){
private int[] array;
public Consume_order(int[] array) {
this.array=array;
}
System.out.println(array[0]);
}
publicstaticvoidmain(字符串[]args){
int[]市场=新int[3];
对于(int i=0;isincenmarked
是您的main
中的局部变量,否。如果您将其设置为类成员变量,则是。nmarked是main方法的局部变量,其范围仅在main方法内。请将所有相关代码添加到问题中,并强调您试图实现的目标。现在还不太清楚,因为nmarked
是您的main
中的一个局部变量,否。如果您将其设置为类成员变量,则是。nmarked是main方法的局部变量,其范围仅在main方法内。请将所有相关代码添加到问题中,并强调您试图实现的目标。现在不太清楚,抱歉,此变量被标记为final和a在main方法中无法稍后进行签名。它不会工作。@VivekSingh很好。我没有注意到最终声明。我将删除它。哦,对不起,对了,它应该是这样的:static int[]market;是的,注意到了错误。现在是这个解决方案,但我需要通过引用传递给其他函数,这不起作用。@AbneryOrtiz您需要传递给其他方法什么?很抱歉,这个变量被标记为final,以后无法在main方法中进行赋值。它不起作用。@VivekSingh很好。我没有注意到final声明。我将删除它。ooops抱歉,对了,它应该是这样的:静态int[]市场;是的,注意到了错误。现在是这个解决方案,但我需要通过引用传递到其他函数,这不起作用。@AbneryOrtiz您需要传递什么到其他方法?Consume\u order Consume=Consume\u order(int[]市场)
将无法通过编译,而且它不是构造函数调用。您的意思是消费\订单消费=新消费\订单(市场)
?在这种情况下,您传递的数组不是空的。可能问题出在您的消费顺序
构造函数中。Eran,我以前填充过数组,但是在打印线程中的第一个元素时。在线程“thread-1”中获取异常java.lang.NullPointerException,这给了我空指针异常。知道market是按值传递的,而不是引用,但如何修复它,不知道!让我们来看看。consumer\u order consumer=consumer\u order(int[]market)
不会通过编译,也不是构造函数调用。你的意思是consumer\u order consumer=new consumer\u order吗(市场);
?在这种情况下,您传递的数组不是空的。可能问题出在您的消费顺序
构造函数中。Eran,我以前填充过数组,但在打印线程中的第一个元素时。在线程“thread-1”中获取异常这是给我的空指针异常。知道市场是通过值传递的,而不是引用,但是如何修复它,不知道!让我们来看看。
public static void main(String[] args) {
int [] market = new int[3];
for (int i=0;i<3;i++) market[i]=i;
Consume_order consume = Consume_order(market);
consume.start();
}
public class Consume_order extends Thread {
public run(){
private int[] array;
public Consume_order(int[] array) {
this.array=array;
}
System.out.println(array[0]);
}