我正在尝试编写一个程序,该程序是一个生成随机字母的游戏,用户选择随机生成的字母是否是用户姓名的一部分。我还没有开始第二个算法,我想重点关注第一个。
更新:嘿,所以我听从了你们的建议,并且我能够让算法 1 工作。现在,我完成算法 1 的唯一事情就是有一个循环来检查随机生成的字母是否在错误的字母数组列表中。如果是,那么它会生成另一个随机字母,如果它不是 arrayList 的一部分,它会询问用户是否是下一个字母。 errorLetters 数组列表应包含多个不是用户名中下一个字母的字符串(字母)。一旦正确猜测了一个字母,它就会清除错误的字母数组列表,并在猜测之后的下一个字母时添加新的字符串。
我尝试使用 while(actualLetter != falseLetters);
使用 do/while 循环,但我不断收到有关“不兼容的操作数类型”的错误。我怎样才能解决这个问题?再次感谢。
再次感谢!
/*
* PSEUDOCODE:
* -Ask user to choose an option (algorithm 1, algorithm 2, quit)
* -if user selects algorithm 1, generate a random number to pass off as unicode(char) and then change char to string
* -ask user whether generated char is part of their name
* -if yes, then add (actualLetter) string to arrayList(name).
* -if no, then add (actualLetter) string to arrayList(wrongLetters).
* reask user to choose an option (algorithm 1, algorithm 2, quit)
* whether user chooses algorithm 1 or 2, after generating random char, check char to make sure its not in the arrayList(wrongLetters)
* if char is in the wrongLetters arrayList, then generate another random char until a char that is not in that array generates
*
*
*/
import javax.swing.JOptionPane;
import java.util.ArrayList;
public class Lab_1 {
public static void main(String[] args) {
int n;
ArrayList<String> name = new ArrayList<String>();
ArrayList<String> wrongLetters = new ArrayList<String>();
String result = "";
int p = 1;
Object[] options2 = {"No", "Yes"};
do{
do{
Object[] options = {"Quit", "Algorithm 2", "Algorithm 1"};
n = JOptionPane.showOptionDialog(null, "Please choose an option.", "A Question", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
if (n != 0){
if (n == 1){
JOptionPane.showMessageDialog(null, "You have chosen algorithm 2.");
}
else if (n == 2){
algorithm1(name, wrongLetters);
p = JOptionPane.showOptionDialog(null, "Are there any letters remaining in your name?", "A Question", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options2, options2[0]);
//if the answer is no
if(p == 0){
for(String str: name){
result=result + str;
}
JOptionPane.showMessageDialog(null, "Your name is " + result);
}
}
}
else {
JOptionPane.showMessageDialog(null, "Thanks for playing, " + result + "!");
}
}while(p == 1);
}while (n != 0);
}
public static void algorithm1(ArrayList<String> name, ArrayList<String> wrongLetters){
String actualLetter = "";
do{
int unicode = (int) (Math.random() * 25) + 65; //comes up with random number to use as a char
char aLetter = (char) unicode;
actualLetter = Character.toString(aLetter);
Object[] options = {"No", "Yes"};
int o;
o = JOptionPane.showOptionDialog(null, "Is this the next letter in your name: " + aLetter, "A Question", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
//if you choose yes
if(o == 1){
name.add(actualLetter);
}
//if you choose no
else if (o == 0){
wrongLetters.add(actualLetter);
}
}while(actualLetter != wrongLetters);
}
}
最佳答案
JOptionPane.showMessageDialog(null, name);
这句话如果错误的话,是无法显示name中的名字的,因为name是一个list的变量,而不是一个String。 你可以这样做:
String result="";
for(String str: name){
result=result+";"+str;
}
JOptionPane.showMessageDialog(null, result);
关于java - 如何通过循环将字符串添加到字符串数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20931570/