2013-02-17 1 views
-1

im пытается создать викторину, в которой у меня есть 10 вопросов (классов), но я хочу отображать только 5 вопросов (классов), после чего оценка будет отображаться в конце викторины .. как я могу это сделать? пожалуйста ..... или можно ограничить рандомизацию в android? Большое спасибо за помощь ..Как ограничить рандомизацию классов в android

вот код, где, если я начинаю играть в этом сусле приходит рандомизацию:

public class Whoami extends Activity { 



/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_whoami); 

    Button bplay =(Button) findViewById(R.id.bplay); 
    bplay.setOnClickListener(new View.OnClickListener() { 



     @Override 
     public void onClick(View arg0) { 


      Random random = new Random();    
      random.nextInt(10); 

       for (int i = 0; i < 5; i++); 

       { 

        Intent newActivity1 = new Intent(Whoami.this,Question1.class); 
        startActivity(newActivity1); 
        finish(); 

       } 
       { 
        Intent newActivity2 = new Intent(Whoami.this,Question2.class);  
        startActivity(newActivity2); 
        finish(); 
       } 
       { 
        Intent newActivity3 = new Intent(Whoami.this,Question3.class);  
        startActivity(newActivity3); 
        finish(); 
       } 
       { 
        Intent newActivity4 = new Intent(Whoami.this,Question4.class);  
        startActivity(newActivity4); 
        finish(); 
       } 
       { 
        Intent newActivity5 = new Intent(Whoami.this,Question5.class);  
        startActivity(newActivity5); 
        finish(); 
       } 
       { 
        Intent newActivity6 = new Intent(Whoami.this,Question6.class);  
        startActivity(newActivity6); 
        finish(); 
       } 
       { 
        Intent newActivity7 = new Intent(Whoami.this,Question7.class);  
        startActivity(newActivity7); 
        finish(); 
       } 
       { 
        Intent newActivity8 = new Intent(Whoami.this,Question8.class);  
        startActivity(newActivity8); 
        finish(); 
       } 
       { 
        Intent newActivity9 = new Intent(Whoami.this,Question9.class);  
        startActivity(newActivity9); 
        finish(); 
       } 
       { 
        Intent newActivity10 = new Intent(Whoami.this,Question10.class);  
        startActivity(newActivity10); 
        finish(); 
       } 
       Intent i = new Intent (Whoami.this, Score.class); 
       startActivity(i); 
       finish(); 
      } 
    }); 
}; 

}

+0

Сначала планируйте свой алгоритм. Например: получите 10 вопросов (случайно, гарантируя, что они уникальны?), Спросите 5, покажите оценку, спросите 5. На данный момент не похоже, что вы используете возвращаемое значение 'random.nextInt (10) '. На самом деле, я вообще не понимаю цели вашего кода. –

ответ

1

Это никогда не является хорошей идеей, чтобы жёстко содержания. Я предполагаю, что вопросы только различаются в терминах их формулировок. Вы должны создать один класс для вопроса, которому передается целое число, указывающее индекс вопроса (от 1 до 10) в его конструкторе.

Пребывание с текущим классом «системы», вы могли бы сделать что-то вроде этого внутри метода OnClick:

Random random = new Random();    
int questions = 10; 
boolean used[] = new boolean[questions]; 
for (int i = 0; i < questions; i++) used[i] = false; 

for (int i = 0; i < 5; i++) { 
    int q; 
    do { q = random.nextInt(questions); } 
    while (used[q]); 
    used[q] = true; 

    Intent i = null; 

    switch (q) { 
    case 0: intent = new Intent(Whoami.this,Question1.class); break; 
    case 1: intent = new Intent(Whoami.this,Question2.class); break; 
    case 2: intent = new Intent(Whoami.this,Question3.class); break; 
    case 3: intent = new Intent(Whoami.this,Question4.class); break; 
    case 4: intent = new Intent(Whoami.this,Question5.class); break; 
    case 5: intent = new Intent(Whoami.this,Question6.class); break; 
    case 6: intent = new Intent(Whoami.this,Question7.class); break; 
    case 7: intent = new Intent(Whoami.this,Question8.class); break; 
    case 8: intent = new Intent(Whoami.this,Question9.class); break; 
    case 9: intent = new Intent(Whoami.this,Question10.class); break; 
    } 

    startActivity(intent); 
} 

Intent i = new Intent (Whoami.this, Score.class); 
startActivity(i); 
finish(); 

Кроме того, я хотел бы рассмотреть это плохая идея, чтобы начать все действия сразу. Скорее начните их, когда предыдущий закончен.