我有一个字符串ArrayList,我需要用它来设置Label的文本。 到目前为止,我已经尝试了很多解决方案,但似乎都没有。
我想从ArrayList中随机取一个字符串来设置我的Label文本然后从ArrayList中删除这个字符串,所以如果我按下位于同一个面板中的按钮,它将呈现一个新的标签中的字符串,但它从不显示已经显示的字符串。
这是我迄今为止所做的。
我尝试使用List类中的remove方法,但似乎无法正常工作。
package milionarioesame;
import java.awt.Color;
import java.awt.Font;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import javax.swing.JLabel;
/**
* Descrive l'etichetta su cui verrà visualizzata la domanda.
*/
public class Question extends JLabel
{
Font cms = new Font("Comic Sans MS", 0, 30);
String d1 = new String("Alessandro Manzoni, noto");
String d2 = new String("Quale di queste città NON fa provincia nel Lazio?");
String d3 = new String("Se si moltiplicano fra di loro tutte le cifre che si trovano sul telefono fisso, si ottiene");
String d4 = new String("Quale di questi animali vive in acque marine?");
String d5 = new String("Cosa significa edulcorare?");
String d6 = new String("Quanti sono i cuccioli di dalmata rapiti in un famoso film Disney?");
String d7 = new String("Quale tra questi noti best-seller di Stephen King è ambientato in una prigione?");
String d8 = new String("Quale di questi pianeti è più vicino al Sole?");
String d9 = new String("Quale tra questi NON è il nome di una moneta?");
String d10 = new String("Quanti sono i magi che si recano a visitare Gesù bambino?");
String d11 = new String("Chi era la bella indiana dai capelli neri dell'omonimo film Disney?");
String d12 = new String("Se sentite tubare, affianco a voi avete");
String d13 = new String("Come si chiama il neonato reale d'Inghilterra?");
String d14 = new String("In quale Land della Germania si trova la città di Monaco?");
String d15 = new String("Tra queste squadre di calcio quale è l'unica ad avere sul suo stemma l'anno di fondazione? ");
String d16 = new String("Quale di questi musicisti NON ha mai fatto parte dei Queen?");
String d17 = new String("Com'è intitolato il settimo libro della celebre saga del mago Harry Potter?");
String d18 = new String("Qual è l'ultima nazione vincitrice del campionato del mondo di calcio?");
String d19 = new String("Sulla tavola degli elementi, \"Au\" indica"); // sequenza di escape
String d20 = new String("Se ammiro il mare da Piazza dell'Unità d'Italia, mi trovo a");
String[] aDomande1 = {d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19, d20};
ArrayList<String> domande1 = new ArrayList(Arrays.asList(aDomande1));
String dom = new String();
int idx = 0;
public Question()
{
setFont(cms);
setForeground(Color.WHITE);
setHorizontalAlignment(JLabel.CENTER);
setText(setDomanda());
}
public String setDomanda()
{
Random rand = new Random();
idx = rand.nextInt(domande1.size());
dom = domande1.get(idx);
return dom;
}
}
答案 0 :(得分:1)
你的代码看起来很好,但我从来没有看到你真正删除任何东西。试试这个版本:
public String setDomanda() {
Random rand = new Random();
idx = rand.nextInt(domande1.size());
return domande1.remove(idx); // remove the string and return it
}
答案 1 :(得分:-1)
用户列表迭代器并使用iteraotor.remove()而不是list.remove()
答案 2 :(得分:-1)
更简单
public String setDomanda() {
Random rand = new Random();
idx = rand.nextInt(domande1.size());
return domande1.remove(idx);
}
remove(int index)
方法返回已删除的元素。
答案 3 :(得分:-1)
作为替代方案,请设置列表。随机清单 - <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" />
- 然后按顺序挑选混洗元素:0,1,2,3 ......