Ck1010
120
2019-04-17 20:16:00
5
185

자바 static변수를 이용한 번호 증가코드 오류?


Student클래스를 이용해 학생을 한명씩 만들면서 자동으로 1번, 2번 ,3번... 이렇게 번호(number)를 주려고 합니다.

static int number 번호를 static으로 해서 처음 한번만 초기화 되게 하고 (객체를 만들때마다 초기화 되지 않도록) 인스턴스 초기화 블럭으로 number값을 1씩 증가시키려고 하는데


2명의 학생을 만들면 출력결과 두명모두 number가 2가 나옵니다 (3명일땐 모두3번) 

어디에 이상이 있는건가요??


public class Test {

public static void main(String args[]) {

Student s1=new Student();

Student s2=new Student();

// Student s3=new Student();

// Student s4=new Student();

s1.show();

s2.show();

// s3.show();

// s4.show();

}

}


class Student{

private String dept;

private int id;

private static int number; //번호

{ //인스턴스 초기화 블럭

number++; //1씩 증가

}

Student(){

this(null,0);

}

Student(String dept,int id){

this.dept=dept;

this.id=id;

}

public void show() { //정보 출력

System.out.printf("학과:%s, 학번:%d, 번호:%d%n",dept,id,number);

}

}

0
0
  • 답변 5

  • LichKing
    13k
    2019-04-17 20:18:19

    이미 답을 써놓으셨네요

    (객체를 만들때마다 초기화 되지 않도록)

    0
  • Ck1010
    120
    2019-04-17 20:29:49

    오옷..... 그래서 전부다 같은 값을 갖고있는거군요... 


    0
  • Ck1010
    120
    2019-04-17 20:32:11

    생성될 때마다 1번 ,2번 ,3번 이렇게 해주려면 어떻게 수정해야될까요 ㅜㅜ

    0
  • Ck1010
    120
    2019-04-17 20:49:36

    int number;

    static int number2;

    변수를 두개 넣고


    생성자함수에 number=number2; 

    이렇게 하니까 됬네여!


    댓글을 보고나니 해답이 떠올랐습니다! 감사합니다~!@

    0
  • 초무쿤
    2k
    2019-04-17 22:06:22

    static이니깐 당연히 다 공유가 되니깐 ....3이지요. member로 하셔야...

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.