在文字游戏中显示一封信

时间:2013-12-22 11:33:18

标签: java arrays string char shuffle

我正在将文字游戏作为家庭作业。但我被卡住了。我有一个洗牌的字,但我需要每回合显示它的第一个(然后是第2个,第3个......)字母。我试着做这样的事情:

char[] arr = a.toCharArray();
   for ( int j = 0; j<arr.length; j++) {

          if (original[j] == shuffled[j] ) { //If the not shuffled word's first letter equals to shuffled word's first letter then move to the 2nd letter and reveal it. Maybe update the j to j+1?}

          else {
            char temp = shuffled[j];
            shuffled[j] = original[j];
            original[j] = temp;
            String h = new String(shuffled);
            System.out.println("test " + h) ; 

          }
        }

我的输出应该是这样的:

原文:Badger 洗牌:drBage

第一回合:Brdage

第二回合:Badrge

第三回合:Badegr

第四回合:Badger

我的当前输出为:

原字:Cat123

shuff 12Cta3

测试C2Cta3

测试CaCta3

测试Catta3

测试Cat1a3

测试Cat123

测试Cat123

2 个答案:

答案 0 :(得分:0)

首先,不要改变这个词 - 你将失去正确的信件订单。

相反:

  • 循环通过字母
  • 打印原始单词
  • 中的第一个“n”个字母
  • 将数组的副本从n +复制到结束
  • 随机播放然后将其打印

答案 1 :(得分:0)

以下伪代码应有助于澄清您的问题。我会调用一个函数,例如每次转弯后我在下面定义的显示字母。

   public class Unscramble{

    public static void main(String[] args){

        char[] orig = args[0].toCharArray();
        char[] shuffled = args[1].toCharArray(); 
        int count = 0;

        while(count < orig.length){

            if(!(orig[count] == shuffled[count]))
                shuffled = revealLetter(shuffled,orig, count);

            count++;
            System.out.println(count + " " + new String(shuffled));
        }
    }


    /*
    * Reveal letter
    * @param shuffled the shuffled array
    * @param original original char array
    * @param index index of letter to reveal
    */
    public static char[] revealLetter(char[] shuffled, char[] original, int index){
      shuffled[index] = original[index];
      return shuffled;
    }
}