我制作了一个程序,从3个选项中选择1个单词并对该单词进行搜索。问题在于它会将单词加扰两次或三次(取决于它在数组中的索引和#34;单词")。例如,如果程序选择" bubble"它将两次争夺" bbbelulubbbe"。如果它选择"摄像机",它会像这样扰乱它三次" croademcrdeaocmrrccmrecardo"。我只希望选中的单词加扰一次。我该如何解决?
import java.util.Collections;
import java.util.LinkedList;
import java.util.Random;
public class Scramble {
public static void main (String[]args) {
String[] words= {"hat", "bubble", "camcorder"};
Random rand= new Random();
int endNum =rand.nextInt(3);
for (int i=0;i<=endNum;i++) {
int alt = endNum;
if (alt==0 || alt ==1 || alt==2) {
String ChosenWord=words[alt];
LinkedList<Character> lnk = new LinkedList<Character>();
for (int j=0;j<=ChosenWord.length()-1;j++) {
lnk.add(ChosenWord.charAt(j));
}
Collections.shuffle(lnk);
for (int p=0;p<lnk.size();p++) {
char addLet=lnk.get(p);
String wholeWord=""+addLet;
System.out.print(wholeWord);
}
}
}
}
}
答案 0 :(得分:2)
当你随机选择一个索引时,你会遍历你随机选择的索引的大小。
for (int i=0;i<=endNum;i++) {
意味着您将单词与索引混合次数。你可以说,因为“bbbelulubbbe”是泡沫混乱两次。
第一次:“bbbelu”
第二次:“lubbbe”
因此,只需在声明后立即根据ChosenWord
设置endNum
。
String[] words= {"hat", "bubble", "camcorder"};
Random rand= new Random();
int endNum =rand.nextInt(words.length);
String ChosenWord=words[endNum];
LinkedList<Character> lnk = new LinkedList<Character>();
for (int j=0;j<=ChosenWord.length()-1;j++) {
lnk.add(ChosenWord.charAt(j));
}
Collections.shuffle(lnk);
for (int p=0;p<lnk.size();p++) {
char addLet=lnk.get(p);
String wholeWord=""+addLet;
System.out.print(wholeWord);
}