2016-08-04 2 views
-1

私は3つの選択肢から1つの単語を選択し、その単語をスクランブルするプログラムを作った。問題は、単語を2〜3回スクランブルすることです(配列 "単語"のどのインデックスに依存するかによる)。たとえば、プログラムが「バブル」を選択すると、「bbbelulubbbe」に2回スクランブルします。 "カムコーダー"を選択すると、この "croademcrdeaocmrrccmrecardo"のように3回スクランブルします。私は選択された単語が一度だけスクランブルされることを望む。どのように私はこれを修正するのですか?なぜワードスクランブルプログラムが単語を1回ではなく複数回スクランブルするのですか?

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

すべての最初は、ロジック 'J <= ChosenWord.length()の美しい使用するためにインデント –

+0

2を修正 - 1 'の助けを –

答えて

2

ランダムにインデックスを選択するときは、ランダムに選択したインデックスのサイズをループします。

for (int i=0;i<=endNum;i++) { 

インデックスを何度も組み合わせるという意味です。あなたは "bbbelulubbbe"がバブルを2度スクランブルしているので、これを知ることができます。

初回: "bbbelu"

2回目: "lubbbe"

だからだけでなく、すぐにそれを宣言した後endNumのオフに基づいてChosenWordを設定します。

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); 
} 
+0

おかげでたくさん! –

関連する問題