2015-02-07 3 views
-1

다소 새로운 기능이 있습니다.(Java) 공용 정적 변수 수정

어쨌든, 저는 Java에 비교적 익숙하지 않습니다. 이것은 uni의 연습 문제입니다. 하나의 질문이 있습니다. 외부에서 TOTAL_RESERVES을 (를) 수정할 수 없도록 설정하려면 어떻게해야합니까? 지금 내가 말하는 경우

골드.TOTAL_RESERVES = 500;

값이 변경됩니다. 생성자 만 값을 변경하도록하려면 어떻게해야합니까?

개인적으로는 비공개로 설정할 수 있지만 API에 있어야합니다.

여기 참조 API

http://www.eecs.yorku.ca/course_archive/2014-15/W/1030/sectionZ/hw/doc/Gold/index.html

public class Gold 
{ 
    static int TOTAL_RESERVES = 100; 
    private int weight; 

    public Gold (int weight) 
    { 
     TOTAL_RESERVES -= weight; 
     this.weight = weight; 
    } 

    public int getWeight() 
    { 
     return this.weight; 
    } 

    public static int remaining() 
    { 
     return TOTAL_RESERVES; 
    } 

    @Override 
    public String toString() 
    { 
     return "Weight = " + this.weight; 
    } 
} 

감사에게이다!

+0

나는 그것이'Gold.TOTAL_RESERVES.' – EJP

+0

입니다 개인 만들 것입니다 전체 우주에서 하나 개의 필드가있는 경우가 그래, 무엇을의 나도 생각했지만 API는 그것을 표시한다 (Javadoc도해야했다). 그래서 그것은 공개적이다. =/ 개인 변수를 문서화해도 괜찮습니까? 그것은 틀린 것처럼 보인다. xD – Nesan

+0

@ 네산 당신은 왜 그것을 정적으로 만들었습니까? – immibis

답변

0

처럼 보일 것이다 코드가 :

public class Gold { 

    public static final int TOTAL_RESERVES = 100; 

    private int weight; 

    private static int remainingWeight; 

    static { 
     remainingWeight = TOTAL_RESERVES; 
    } 

    public Gold(int weight) { 

     if (remainingWeight <= 0) { 

      this.weight = 0; 
      remainingWeight = 0; 
     } 

     else { 
      if (weight >= 0) { 
       if (weight > remaining()) 
        this.weight = remaining(); 
       else 
        this.weight = weight; 
      } else { 
       this.weight = 0; 
      } 

      remainingWeight -= this.weight; 
     } 
    } 

    public int getWeight() { 
     return this.weight; 
    } 

    public static int remaining() { 
     return remainingWeight; 
    } 

    @Override 
    public String toString() { 
     return "Weight = " + this.weight; 
    } 

    public static void main(String[] args) { 

    } 
} 
+0

하지만 remaining()은 항상 100을 반환하지 않습니까? – Nesan

+0

@ 네산 코드를 지금 참조하십시오 – Tarik

+0

이봐, 고마워! 실제로, 무엇이 정적 { remainingWeight = TOTAL_RESERVES; } ? 나에게 새로운 구문. – Nesan

0

나는 개인적으로이 문제를 해결하는 최선의 해결책이라고 말하고 싶습니다. 그 대답은 당신이 원하는 대답은 아니지만 ... 그 최고의 솔루션입니다.

+0

예, 그게 제가 생각한 것입니다. 그러나 API는 그것을 보여줍니다 (Javadoc도해야만했습니다). 그래서 공개입니다. =/ – Nesan

0

설명서에서 TOTAL_RESERVES의 필드 세부 정보는 public static final int TOTAL_RESERVES입니다. final 수정자는 TOTAL_RESERVES이 상수라는 것을 의미합니다.

private static int CURRENT_RESERVES = TOTAL_RESERVES; 

을 그리고 나머지 보유 무게를 빼고 반환하는 데 사용할 : 현재 보유 추적하기 위해이 같은 다른 변수를 만들어야합니다. 사용자가 지정한 API에 대해서

+0

예, 이것은 가장 그럴듯한 해결책 인 것 같습니다. 나는이 모든 일을 한 분야에서 할 수 없다고 생각합니다. 감사합니다. 내일 교수님과 확인해 보겠습니다. – Nesan