2014-12-07 6 views
0

저는 프로그래밍에 아주 익숙하고 버튼을 눌렀을 때 농담을 말하는이 앱을 만들었습니다. 유일한 문제는 보지 않을 텍스트가 더 이상 없기 때문에 앱이 충돌하는 마지막 텍스트에 도달했을 때입니다. 마지막 텍스트가 도착했을 때 배열을 처음부터 다시 시작하는 방법이있을 것이라고 확신합니다. 어떻게해야할지 모르겠습니다. 어떤 도움이 대단히 감사하겠습니다! 여기 마지막 텍스트에 도달하면 배열을 반복 하시겠습니까?

내 코드입니다 :

당신은 임의의 숫자를 버튼을 클릭 할 때마다 점점 때문에, 당신은 당신의 배열에 액세스하기 전에 카운터를 증가시키지 필요가
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final TextView line = (TextView) findViewById(R.id.line); 
    Button bl = (Button) findViewById(R.id.bl); 

    final String[] jokes = { 
     "joke 1", "joke 2" , "joke 3" , "joke 4"  
    }; 

    bl.setOnClickListener(new View.OnClickListener() { 
     int rando = (int) (Math.random() * 4); 
     @Override 
     public void onClick(View v) { 
      rando++; 
      line.setText(jokes[rando]); 

     } 
    }); 
    } 
+0

이것은 답변으로 게시하고 예외 처리기를 사용하여 arrayOutBoundsException을 잡고 다시 시작하는 데 도움이된다면 주석입니다. 이해가 되니? 코드가 필요하십니까? 경? – Elltz

답변

1

:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final TextView line = (TextView) findViewById(R.id.line); 
    Button bl = (Button) findViewById(R.id.bl); 

    final String[] jokes = { 
     "joke 1", "joke 2" , "joke 3" , "joke 4"  
    }; 

    bl.setOnClickListener(new View.OnClickListener() { 
     int rando = (int) (Math.random() * 4); 
     @Override 
     public void onClick(View v) { 
      line.setText(jokes[rando]); 

     } 
    }); 
} 

또 다른를 하나의 난수를 한 번 가져 와서 필드에 저장 한 다음 버튼을 클릭 할 때마다 증가시켜야합니다.

int rando; // store in a field in your Activity 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final TextView line = (TextView) findViewById(R.id.line); 
    Button bl = (Button) findViewById(R.id.bl); 

    final String[] jokes = { 
     "joke 1", "joke 2" , "joke 3" , "joke 4"  
    }; 
    final int jokeCount = jokes.length; 
    rando = (int) (Math.random() * 4); // initialize only in onCreate 

    bl.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (++rando >= jokeCount) { // increment in onClick 
       rando = 0;    // reset counter when needed 
      } 
      line.setText(jokes[rando]); 
     } 
    }); 
} 
+0

그래, 이걸하고 있었어.하지만,별로 좋지 않아. 너는 이미 보았던 농담 (내용이 무작위로 반복되는)을 농담으로 반복하기 때문에, 어플을 시작할 때 임의의 농담을 선택하고 나선다. 하나씩 차례로. 나는 미안한 질문에 이것을 명시해야했다. –

+0

두 번째 대안은 당신을 위해 작동합니다. 한 위치에서 무작위로 시작한 다음 목록을 순환하여 끝에 배치합니다. – Bruce

+0

미안하지만 그 사람을 보지 못했습니다 감사합니다! –

관련 문제