2013-11-24 1 views
2

Для моего проекта CS я делаю викторину с несколькими вариантами. У каждой викторины есть вопрос и четыре возможных ответа. Правильный ответ сохраняется как строка. Все неправильные ответы сохраняются в массиве строк. Я хочу сделать кнопку для каждого из них. Но я не хочу, чтобы правильный ответ всегда был в том же положении, поэтому я хочу случайно разместить его. После того, как я случайно разместил его, я не знаю, как создавать кнопки для массива строк. Помогите!В Java, как сделать каждый элемент в массиве кнопкой?

` общественного отображения() {

answer1 = new JButton("1"); 
    answer2 = new JButton("2"); 
    answer3 = new JButton("3"); 
    answer4 = new JButton(""); 
    question = new JLabel ("question?"); 
} 

public Display(String question1, String [] answers, String correct, String pictureName){ 
    //create a panel to hold buttons 

    SimplePicture background = new SimplePicture(pictureName); 
    JLabel picture = background.getJLabel(); 

    question = new JLabel(question1); 

    //assign answers to buttons 

    //generate a random number to determine where correct goes 
    int index = (int)(Math.random()*4); 

    //place correct answer in a certain button 
    if (index == 0){ 
     answer1 = new JButton(correct); 
    } 
    else if (index == 1){ 
     answer2 = new JButton(correct); 
    } 
    else if (index == 2){ 
     answer3 = new JButton(correct); 
    } 
    else if (index == 3){ 
     answer4 = new JButton(correct); 
    } 

    //fill other spots with answers 
    for (int i=0; i < answers.length; i++){ 
     this is where I need help 

     } 
    }` 
+0

Возможно, какой-то визуальный эффект поможет. Я не понимаю желаемого результата. –

ответ

0

EDIT

Теперь с ответом на ваш вопрос:

Поскольку вы знаете заранее, сколько кнопок есть вы можете просто использовать массив.

JButton[] buttons; 

buttons = new JButton[4] // or new JButton[answers.length] if you ever 
         // want to increase the amount of answers. 

//assign answers to buttons 

//generate a random number to determine where correct goes 
int index = (int)(Math.random() * 4); 

//put the correct answer to the random button: 
buttons[index] = new JButton(correct) 

//fill other spots with answers 
for (int i = 1; i <= answers.length; i++) { 
    buttons[(index + i) % answers.length] = new JButton(answers[i - 1]); 
} 

Так что это делает в случае, если вы не знаете, что % является оператором модуля в Java. Так что если (index + i) когда-либо выше 3 (предположим, answers.length - 3), он снова станет 0, поэтому вы не получите IndexOutOfBoundsException.

Надеюсь, это поможет.

+0

Я получаю сообщение об ошибке со списком. В нем говорится, что List не является общим и его нельзя параметризовать аргументами . Что мне делать? – darknessofshadows

+0

Хмм убедитесь, что у вас есть правильный импорт: я добавлю их к ответу выше – Octoshape

+0

@darknessofshadows Это работало для вас? – Octoshape

Смежные вопросы