主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;isince
nmarked
是您的
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]);
 }