所以,当我创建一个对象数组时,我得到的输出是被调用的最后一个对象的值,我做错了什么?
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
答案 0 :(得分:0)
所以我猜问题来自静态字段&#34; n&#34;在你的班级&#34;一个&#34;。你使用哪个IDE?当我将您的代码粘贴到eclipse中时,我会立即在obj[i].start();
和obj[i].n
由于你遍历你的文件并调用静态方法(start),每次都会覆盖Class-Field(重要的 - 不是实例字段),只有最后一个值会出现在&#34; n&#34;
尝试启动并且字段非静态。
干杯, 赖
又一次(我只是偶然回到这个问题,如果你能立刻丰富你的榜样,你就已经有了解决方案^^)