2016-10-22 2 views
0

은 내 객체 값을 가져 오는 방법을 이해할 수 없습니다. 예를 들어이 코드 줄에서. 예를 들어 "돈"과 같은 개체를 얻었고 버튼 클릭시 돈을 증가 시키려고합니다.Java 객체 초기화

package com.crelix.crelix; 

public class MainHolder { 

    int id; 
    String name; 
    int count; 

    public void id(int id) { 

    } 

    public MainHolder(String name) { 


    } 


    public void count(int count) { 

    } 


    public static void main(String args[]) { 

     MainHolder Money = new MainHolder("Money: "); 
     MainHolder MoneyClicks = new MainHolder("Money Clicks: "); 
     MainHolder Boxes = new MainHolder("Boxes: "); 
     MainHolder BoxClicks = new MainHolder("Boxes Clicks: "); 
     MainHolder BoxLevel = new MainHolder("Box Level: "); 
     MainHolder PlayerLevel = new MainHolder("Player Level: "); 
     MainHolder GarageLevel = new MainHolder("Garage Level: "); 
     MainHolder GarageSlots = new MainHolder("Garage Slots: "); 

     Money.id(1); 
     Money.count(0); 

     MoneyClicks.id(2); 
     MoneyClicks.count(0); 

     Boxes.id(3); 
     Boxes.count(0); 

     BoxClicks.id(4); 
     BoxClicks.count(0); 

     BoxLevel.id(5); 
     BoxLevel.count(1); 

     PlayerLevel.id(6); 
     PlayerLevel.count(1); 

     GarageLevel.id(7); 
     GarageLevel.count(1); 

     GarageSlots.id(8); 
     GarageSlots.count(25); 



    } 
} 

예를 들어 값을 증가시키고 싶습니다. 내 앞의 코드에서

나는 내가 할 기운이 코드 이제 CarMain.main[0] += 1;

처럼 그 일을했다.

그리고 캔트 공개로 카운트 변수를 선언 시도하거나

답변

-2

처럼 않습니다. 당신이 카운트 변수가 항상 1 씩 증가 할 경우

// This function will increment the count by the entered count variable. 
public void function count(int count){ 
    this.count += count; 
} 

이, 당신이 필요 해달라고 :

기본적으로, 당신은 예를 Money.count(1) 요구 때마다, 당신은 계산 방법에 다음 구현을 가질 수 있습니다 count 매개 변수. 인수없이 메서드를 호출 한 다음 메서드 내에서 1 씩 증가시킬 수 있습니다.

0

글쎄, 당신은 카운트를 수행하는 올바른 방법을 구현하는 방법을 구축 CarMain.Money.count +=1;

0

변수 이름이 Java Naming Conventions이 아니므로 코드를 작성하는 것이 더 힘들어집니다.

다음으로 질문은 완전히 분명하지 않지만 클릭 할 때마다 MainHolder의 숫자가 증가하는 버튼이있는 그래픽 사용자 인터페이스 (GUI)를 만들고 싶은 것 같습니다. 또한 필요에 따라 데이터를 저장하고 수정할 수있는 데이터 모델 유형의 객체를 작성하는 방법에 대해 고민하고 있다고 생각합니다.

데이터 모델이 될 것으로 가정하는 MainHolder부터 시작해 보겠습니다. 데이터 모델 객체를 만드는 일반적인 방법은 원하는 필드를 (Java Tutorial - Controlling Access to Members of a Class 참조) 정의하고 다른 클래스 (예 : GUI)에서 공개적으로 사용할 수있는 각 필드에 getter 및/또는 setter 메서드를 제공하는 것입니다.

public class MainHolder { 

    private static int nextId = 1; 
    private int id; 
    private String name; 
    private int count; 

    public MainHolder(String name) { 
     count = 0; 
     this.name = name; 
     id = nextId; 
     nextId++; 
    } 

    public void setCount(int count) { 
     this.count = count; 
    } 

    public int getCount(){ 
     return count; 
    } 
} 

생성자 내부 필드의 대부분을 초기화하고 nextId에 개체의 id을 설정 한 다음 하나를 사용하여 staticnextId 필드를 증가하는 방법 당신은 알 수 있습니다. 귀하의 질문과 귀하의 코드에 기초하여 귀하가 찾고자하는 행동 유형이라고 가정했습니다.

count 필드에 대한 액세스를 허용하는 간단한 방법 쌍 getCountsetCount이 제공됩니다.

이제 GUI를 만들고 데이터 모델을 사용할 수 있습니다. GUI 응용 프로그램의 경우 일반적으로 모범 사례로 간주되므로 MVC (model view controller) 패턴을 따라야한다고 가정합니다. 따라서 컨트롤러 클래스에 MainHolder의 인스턴스를 만든 다음 컨트롤러를 GUI 인스턴스에 전달해야합니다.컨트롤러는 비즈니스 수준의 방법을 제공 할 것 -이 비슷한 것 컨트롤러 내부 addMoney(int amt)

같은 아마 뭔가 : 당신의 GUI 클래스 내부

public class Controller{ 
    private MainHolder money; 
    ... 

    public Controller(){ 
     money = new MainHolder("Money: "); 
    } 
    ... 

    public addMoney(int amt){ 
     int amount = money.getCount() + amt; 
     money.setCount(amount); 
    } 
    ... 

    public static void main(String args[]) { 
     Controller controller = new Controller(); 
     MyGui myGui = new MyGui(controller); 
     //Invoke appropriate method(s) to show the GUI 
     ... 

당신이 listenter가 호출 할 것이다 당신의 버튼에 부착 된 것을 이 같은 컨트롤러의 addMoney에있어서,

addMoneyButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      controller.addMoney(1); 
     } 
    }); 

나는 이것이 당신이 올바른 방향으로 이동 할텐데, 행운을 빌어 요!