2013-08-28 2 views
0

내가 특정 게임 "점수 추적기"응용 프로그램의 어떤 종류를 개발하고 있어요. 사용자가 일정량의 플레이어를 추가하면 (해당 숫자는 현재 무제한 임) 해당 플레이어 이름이 ArrayList에 추가됩니다. 그런 다음 다음 활동에서 Spinner에서 playername을 선택하고 특정 점수를 입력하거나 해당 플레이어에 대해 "score"라고 말해야합니다.각 ArrayList 요소에 대해 개별 정수를 만드시겠습니까?

이 내 현재 코드는 다음입니다 :

public void submitScore(View v){ 
    LinearLayout lLayout = (LinearLayout) findViewById (R.id.linearLayout); 
    final int position = playerList.getSelectedItemPosition(); 
    EditText input = (EditText) findViewById(R.id.editText1); 
    final LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    final TextView newTextView = new TextView(this); 
    String enteredText = input.getText().toString(); 

    if (enteredText.matches("")) 
    { 
     emptyTextError(); 
    } 
    else 
    { 
     //NEW TEXTVIEW 
     newTextView.setLayoutParams(lparams); 
     newTextView.setText(players.get(position) + " " + score); 
     newTextView.setTextSize(20); 
     lLayout.addView(newTextView); 
    } 
} 

당신이 볼 수 있듯이, 사용자는 특정 점수를 입력하고 새로운 텍스트 뷰는 플레이어의 이름과 현재의 점수를 포함 생성됩니다.

지금 내가 뭘 원하는 각 선수에 대한 점수를 추적하는 기능을 구현한다.

예 : 사용자가 2 플레이어, 존이라는 하나와 잭라는 이름 하나를 추가했다. 그런 다음 사용자는 John에게 20 점을 추가 한 후 잠시 후 20 점을 추가했습니다. 이제 textViews는 다음과 같이한다 : 다음

요한 복음 20

존 (40)

와 사용자가 잭에 10 점을 추가합니다 존 또 다른 20, TextViews는 다음과 같이해야하는 경우 :

요한 복음 20

존 (40)

,

잭 (10)

존 (60)

이 내가 무엇을 모르는 것입니다. 각 ArrayList 요소에 대해 새로운 int 변수를 구현하려면 어떻게해야합니까? 아니면 int 변수를 만드는 것보다 더 좋은 방법이 있을까요? ArrayList에 5 플레이어가 포함되어있는 경우

나는 5 개의 int 나는 사용자가 입력하는 방법 많은 선수 모르기 때문에 생성 될 필요가 자동으로 위해 ArrayList accoring에의 int를 생성하는 응용 프로그램이 필요합니다.

+1

_Map_ 또는 _ _ 플레이어 _ 점수 _ 컴포지션 _을 사용하지 않는 이유는 무엇입니까? – rocketboy

+0

@rocketboy 그런 일은 한번도하지 않았습니다. 아직 초보자입니다. 이 작업을 수행하는 방법에 대한 설명을 추가 할 수 있습니까?감사합니다. – Guy

답변

1

는 클래스, 아마도 '플레이어'라는를 작성해야합니다. 각 플레이어의 문자열 값은 name이고 int 값은 score입니다. 그런 다음 새 플레이어가 생성 될 때마다 이러한 Player 인스턴스를 배열에 추가 할 수 있습니다. 당신이 트리 맵을 사용하여 이름을 기준으로 정렬하려면 HashMap<~>

Map<String, Integer> map = new HashMap<String, Integer>(); 
    map.put("John", 10); 
    map.put("Bob", 40); 

을 시도 빠른 액세스를 들면, Map<String,Integer>를 사용하여보십시오 Java class toturial

+0

감사합니다. 나는 그것을 시도해보고 어떻게 될지 알려주겠습니다. – Guy

+0

또한 OP는 [지도 책자 모음] (http://docs.oracle.com/)에서 '지도'및 기타 컬렉션에 대해 배워야합니다. javase/tutorial/collections) – chrylis

0
 class PlayerScore{ 

     String userName; 
     int score; 
     public PlayerScore(String userName, int score) { 
        this.userName = userName; 
        this.score = score; 
     } 

     //setter and getter 

     }  

     List<PlayerScore> playerScore=new ArrayList<PlayerScore>(); 
     playerScore.add(new PlayerScore("John",20)); 
     playerScore.add(new PlayerScore("John",40)); 
     playerScore.add(new PlayerScore("Jack",10)); 
     playerScore.add(new PlayerScore("John",60)); 
+0

이것은 매튜의 의미가 아닙니다. 40 배인 2x20을 더합니다. 직접 40을 더합니다. 따라서 플레이어 개체의 점수에 대한 감사/기록 속성이 있어야합니다. – aki

관련 문제