2014-03-26 42 views
0

随机字符串我创建一个测验打印从ArrayList类成JLabel的文本

我有一个包含图形用户界面和代码的地方,将在我的应用程序会问的问题一个位置的一类。下面的类将被用来保存一个JLabel组件(在其他UI元素中),并且应该从给出的问题列表中显示一个随机问题。我将这些'问题列表'中的每一个都保存在另一个班级中作为ArrayList

我知道你将不得不使用一个随机数发生器挑选从问题列表中的线,通过生成的索引号,然后使用这个从数组检索行作为文本来使用显示在JLabel

但我不确定如何做到这一点,当涉及到实际的代码,请任何人都可以帮助。

我的代码如下:

package ZillionaireGUI; 

import java.awt.Frame; 

import javax.swing.ButtonGroup; 
import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JRadioButton; 
import javax.swing.SwingUtilities; 


public class questionDialog extends JDialog { 
private JLabel Question; 
private JRadioButton answerThree; 
private JRadioButton answerFour; 
private JRadioButton answerTwo; 
private JRadioButton answerOne; 
public questionDialog(Frame parent) { 
    super(parent); 
} 


public questionDialog(JFrame frame) { 
    super(frame); 
    initGUI(); 
} 

private void initGUI() { 
    try { 

     getContentPane().setLayout(null); 

     Question = new JLabel(); 
     getContentPane().add(Question); 
     Question.setText("jLabel1"); 
     Question.setBounds(39, 127, 383, 29); 

     answerOne = new JRadioButton(); 
     getContentPane().add(answerOne); 
     answerOne.setText("jRadioButton1"); 
     answerOne.setBounds(26, 183, 93, 20); 

     answerTwo = new JRadioButton(); 
     getContentPane().add(answerTwo); 
     answerTwo.setText("jRadioButton1"); 
     answerTwo.setBounds(130, 183, 93, 20); 

     answerThree = new JRadioButton(); 
     getContentPane().add(answerThree); 
     answerThree.setText("jRadioButton1"); 
     answerThree.setBounds(247, 183, 93, 20); 

     answerFour = new JRadioButton(); 
     getContentPane().add(answerFour); 
     answerFour.setText("jRadioButton1"); 
     answerFour.setBounds(360, 183, 93, 20); 

     ButtonGroup group = new ButtonGroup(); 
     group.add(answerOne); 
     group.add(answerTwo); 
     group.add(answerThree); 
     group.add(answerFour); 


     this.setSize(490, 393); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

}

import java.util.*; 
public class Questions { 
public static void main(String[] args) { 
    ArrayList<String> SPOquestions = new ArrayList<String>(); // adding the sports questions for the quiz 

    SPOquestions.add("Who won the 2005 Formula One World Championship?"); 
    SPOquestions.add("Which team has the most Formula One Constructors titles?"); 
    SPOquestions.add("In what year did Roger Federer win his first 'Grand Slam'?"); 
    SPOquestions.add("How many 'Grand Slams' has Rafael Nadal won?"); 
    SPOquestions.add("Who has scored the most amount of goals in the Premier League?"); 
    SPOquestions.add("Who has won the most World Cups in football?"); 
    SPOquestions.add("How many MotoGP titles does Valentino Rossi hold?"); 
    SPOquestions.add("Who was the 2013 MotoGP champion?"); 
    SPOquestions.add("Who won the 2003 Rugby World Cup?"); 
    SPOquestions.add("In rugby league, how many points are awarded for a try?"); 
    SPOquestions.add("Who is the youngest ever snooker World Champion?"); 
    SPOquestions.add("In snooker, what is the highest maximum possible break?"); 
    SPOquestions.add("How many majors has Tiger Woods won?"); 
    SPOquestions.add("In golf, what is the tournament between the USA and Europe called?"); 
    SPOquestions.add("How many World Championships has darts player Phil Taylor won?"); 
    SPOquestions.add("What is the maximum possible amount of points a player can earn from throwing three darts?"); 
    SPOquestions.add("How many gold medals did Michael Phelps win at the 2008 Beijing Olympics?"); 
    SPOquestions.add("Who won the 2012 Olympic 100 metres mens race?"); 
    SPOquestions.add("Which of these events are not a part of the heptathlon?"); 
    SPOquestions.add("When was the first modern Olympics held?"); 

    ArrayList<String> MUSquestions = new ArrayList<String>(); // adding the music questions 

    MUSquestions.add("'Slash' was a member of which US rock band?"); 
    MUSquestions.add("Brian May was a member of which English rock band?"); 
    MUSquestions.add("What is the name of the music festival held annually in the town of Boom, Belgium?"); 
    MUSquestions.add("The rapper Tupac Shakuer '2Pac' died in which year?"); 
    MUSquestions.add("Which of these bands headlined the 2013 Glastonbury music festival?"); 
    MUSquestions.add("Which of these people designed the 'Les Paul' series of guitars?"); 
    MUSquestions.add("Keith Moon was a drummer for which English rock band?"); 
    MUSquestions.add("Kanye West has a total of how many Grammy awards?"); 
    MUSquestions.add("Beyonce Knowles was formally a member of which US group?"); 
    MUSquestions.add("In which US city was rapper 'Biggie Smalls' born?"); 
    MUSquestions.add("Michael Jackson's first number one single in the UK as a solo artist was what?"); 
    MUSquestions.add("The best selling album of all time in the UK is what?"); 
    MUSquestions.add("The best selling album of all time in the US is what?"); 
    MUSquestions.add("What is the artist known as 'Tiesto's real name?"); 
    MUSquestions.add("Which of these was not a member of The Beatles?"); 

    ArrayList<String> GENquestions = new ArrayList<String>(); // adding general knowledge questions 

    GENquestions.add("Who was the second President of the United States?"); 
    GENquestions.add("The youngest son of Bob Marley was who?"); 
    GENquestions.add("In the film '8 Mile', the character portrayed by Eminem is known as what?"); 
    GENquestions.add("What is the capital city of New Zealand?"); 
    GENquestions.add("What is the capital city of Australia?"); 
    GENquestions.add("How many millilitres are there in an English pint?"); 
    GENquestions.add("What was the biggest selling game for the PS2 worldwide?"); 
    GENquestions.add("What is the last letter of the Greek alphabet?"); 
    GENquestions.add("Who created the television series Futurama?"); 
    GENquestions.add("A word which reads the same backwards as it does forwards is known as a what?"); 
    GENquestions.add("A 'baker's dozen' consists of how many items?"); 
    GENquestions.add("World War 1 officially occured on which date?"); 
    GENquestions.add("'Trouble and strife' is cockney rhyming slang for what?"); 
    GENquestions.add("Who was the last Prime Minister to hail from the labour party in the UK?"); 
    GENquestions.add("WalMart is the parent company of which UK based supermarket chain?"); 




} 

} 

回答

2

首先,您需要根据您的阵列的尺寸来产生一个随机数。从Math.random()获得0.0 - 1.0范围内的随机值,并将其乘以问题数组的大小(例如,MUSquestions.size()) - 这将为您提供数组中的随机索引。

然后。使用ArrayList get方法,传入索引以获取所需的字符串。

+0

那么,我在我的arraylist类或JLabel所在的类中生成这个随机数? – user3455584

+1

可能是JLabel所在的类。就像'label.setText(MUSquestions.get(Math.random()* MUSquestions.size()));' –

+0

嗯,我试过这个,但它不能解决MUSquestions部分? – user3455584

2

我肯定会这样使用collections.shuffle: List arrlist = new ArrayList();更这里

Random rand = new Random(); 

// nextInt is normally exclusive of the top value, 
// so add 1 to make it inclusive 
int randomNum = rand.nextInt((max - min) + 1) + min; 

阅读:

// populate the list 
    arrlist.add("A"); 
    arrlist.add("B"); 
    arrlist.add("C"); 

    System.out.println("Initial collection: "+arrlist); 

    // shuffle the list 
    Collections.shuffle(arrlist); 

    System.out.println("Final collection after shuffle: "+arrlist);