Jan Czarny
Jan Czarny

Reputation: 916

In Object Array = all elements are same... After assign data

For Example if I Create array of object And assing data...

short version of problem. array[0].init("ce", 2) array[1].init("nh", 2)

Output... Of array[0] Will be same as array[1] But why? what's wrong? I need.. not same results

Here is code:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.lang.Math;


public class Gra_ulamki {

    /**
     * @param args the command line arguments
     */

   public static ulamek[] tab_ulamkow;
   public static void main(String[] args) 
   {

         tab_ulamkow = new ulamek[30];


         tab_ulamkow[0] = new ulamek();
         tab_ulamkow[0].init("dd", 5);

         tab_ulamkow[1] = new ulamek();
         tab_ulamkow[1].init("dde", 8); 

         System.out.println("poz x --" + tab_ulamkow[0].x + "-- y poz " + tab_ulamkow[0].y);
          System.out.println("poz x --" + tab_ulamkow[1].x + "-- y poz " + tab_ulamkow[1].y);

         // TODO code application logic here
         //new GUI();
         //new GUI();
    }

}

class ulamek
{
public static String ch_v;
public static int x = 0, y = -5, y_max = 325;


public void init(String a, int number)
{
    this.ch_v = a;

   // przypisanie x
    this.x = number;    
}


public void move()
{


    // restart pozycji w osi y
    if(this.y < y_max)
    {
        this.y += +1;
    }
    else
    {
        this.y = -5;
    }

}

}

Thank You for help

Upvotes: 2

Views: 791

Answers (3)

Makoto
Makoto

Reputation: 106430

In class ulamek:

Change:

public static String ch_v;
public static int x = 0, y = -5, y_max = 325;

to:

public String ch_v;
public int x = 0, y = -5, y_max = 325;

Declaring a variable or method static means that its value is available across all classes.

Upvotes: 2

everag
everag

Reputation: 7662

The fields in your ulamek class are static's

It means that they belong to the ulamek Type, and not it's instances (objects).

Alter it this way:

class ulamek
{
    public String ch_v;
    public int x = 0, y = -5, y_max = 325;
...

And it should work.

Upvotes: 2

NPE
NPE

Reputation: 500327

If a data member is static, this means that it is shared by all instances of the class:

public static String ch_v;
public static int x = 0, y = -5, y_max = 325;

Remove the two static modifiers.

Upvotes: 6

Related Questions