【问题标题】:Revealing a letter in a word game在文字游戏中显示一个字母
【发布时间】:2013-12-22 11:33:17
【问题描述】:

我正在做一个文字游戏作为家庭作业。但我被困住了。我有一个打乱的单词,但我需要每轮显示它的第一个(然后是第二个,第三个......)字母。我试图做这样的事情:

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) ; 

          }
        }

我的输出应该是这样的:

原词:獾 改组词:drBage

第一回合:桥接

第二回合:徽章

第三回合:Badegr

第四回合:獾

我当前的输出是:

原词:Cat123

洗牌 12Cta3

测试 C2Cta3

测试 CaCta3

测试 Catta3

测试 Cat1a3

测试 Cat123

测试 Cat123

【问题讨论】:

  • 您目前得到了什么?在 Stackoverflow 上,说明当前无法正常工作的内容是合适的。这将有助于了解您当前的输出是什么。
  • 添加了我当前的输出。 @peeskillet
  • 怎么不行?您期望看到什么作为输出?
  • 当前输出确实会一一显示字母。看看我当前的输出它是 C2Cta3。是的,它显示第一个字母,但第三个字母也是 C。我想要做的是使它成为 C21ta3。替换了 C 和 1。@peeskillet
  • 你希望它洗牌的模式/顺序是什么?

标签: java arrays string char shuffle


【解决方案1】:

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

   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;
    }
}

【讨论】:

  • revealNo 是 int 索引吗? @嗯
  • 有了这个(我将int index更改为intrevealNo)我的输出是:shuffled word:1g2Do3,new word:Dgg123(无限循环)@hmm
【解决方案2】:

首先,不要乱序排列 - 你会失去正确的字母顺序。

改为:

  • 遍历字母
  • 打印原始单词的前“n”个字母
  • 从 n+ 到 end 复制数组
  • 随机播放然后打印

【讨论】:

  • 我在不同的 char[] 变量(original[])中有正确的字母顺序,后来我将其转换为 char[]。我已经尝试了 3 种不同的方法来做到这一点,但没有一个奏效。 @波西米亚
猜你喜欢
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多