为什么我的单词加扰程序会多次扰乱这个单词而不是一次?

时间:2016-08-04 02:19:48

标签: java

我制作了一个程序,从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); 
                } 
            } 
        } 
    } 
}

1 个答案:

答案 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); 
}