对象数组返回相同的值

时间:2018-03-15 13:58:18

标签: java arrays object arrayobject

所以,当我创建一个对象数组时,我得到的输出是被调用的最后一个对象的值,我做错了什么?

 import java.util.*;
    class one
    { 
    static int n;
      static void start()
     {

     System.out.println("Enter number");
     Scanner s=new Scanner(System.in);
     n=s.nextInt();
     }
    }
    class M
    {
     public static void main(String args[])
      {
     int cnt,i;
     System.out.println("Objects?");
      Scanner s=new Scanner(System.in);
      cnt=s.nextInt();
      one obj[]=new one[cnt];
      for(i=0;i<cnt;i++)
         {
          obj[i]=new one();
          obj[i].start(); 
         }
         for(i=0;i<cnt;i++)
         {
          System.out.println(obj[i].n);     
         }  
      }
    }

是否因为静态变量? The output

1 个答案:

答案 0 :(得分:0)

所以我猜问题来自静态字段&#34; n&#34;在你的班级&#34;一个&#34;。你使用哪个IDE?当我将您的代码粘贴到eclipse中时,我会立即在obj[i].start();obj[i].n

处收到两条(相关)警告

static vs. non static fields

由于你遍历你的文件并调用静态方法(start),每次都会覆盖Class-Field(重要的 - 不是实例字段),只有最后一个值会出现在&#34; n&#34;

尝试启动并且字段非静态。

干杯, 赖

又一次(我只是偶然回到这个问题,如果你能立刻丰富你的榜样,你就已经有了解决方案^^)