如何在二维数组中导航并随机播放该数组中的单词?

时间:2015-12-13 03:16:11

标签: java arrays

所以我需要帮助。我正在使用二维数组,所以我要做的就是连续浏览2-d数组(从数组的左上角开始,就像你正在读段落一样)。 我尝试编写一个返回数组的方法,其中包含以下规则:

1)如果单词以元音(a,e,i,o,u)开头:将单词与同一行中的前一个单词交换

2)如果该单词是该行的第一个单词,则将其与正上方的单词交换;但是,如果单词位于第一行,则不应进行交换。

3)如果单词以辅音开头,则交换单词的第一个和最后一个字符。

实施例。 2-dim数组:

米饭,鸡蛋,房间

apple,java,owl

转换:

apple,eicr,moor

蛋,猫头鹰,avaj

这是我到目前为止所做的: 我已经准备好测试仪类并准备就绪,但我在下面的课程中设置方法时遇到了问题。这对我需要的指导非常重要。

public class WordShuffle 
{
    // Use this method signature
    // The parameter is a 2-dim array of words
    // The method will return a 2-dim array of shuffled words

    public String[][] shuffleWords(String[][] words) 
    {


    }

}

测试员类:

public class WordShuffleTester 
{
    // Don't change this tester except to change the values in the 2-dim array
    public static void main(String[] args) 
    {   
        // This is the 2-dim array to test your method
        String[][] words = {{ "doom", "candy", "apple"},
                          {"orange", "energy",   "rat"},
                          {   "mad",  "test",  "cool"},
                          {   "red", "blue",  "drain"}}; 

        WordShuffle shuffler = new WordShuffle();
        String[][] mixedUpWords = shuffler.shuffleWords(words);

        // The following will print out each element of the returned array
        for (int r=0; r < mixedUpWords.length; r++)
        {
            for (int c=0; c < mixedUpWords[r].length; c++)
            {
                System.out.print(mixedUpWords[r][c] + "\t");
            }
            System.out.println(" ");
        }



    }

}

如果有人能够帮助我进一步帮助我,那将是非常有必要的!

2 个答案:

答案 0 :(得分:0)

我很厌倦了这一点,但将来尝试至少尝试自己解决问题(你的Child方法完全是空的。)

shuffleWords

虽然此代码有效,但重要的是要注意,当移动单词时(由于第1或第2规则),以辅音开头的单词可能会多次交换第一个和最后一个字母。不确定这是否是预期的效果,但可能需要对执行这些任务的顺序进行一些调整。以下是使用public String[][] shuffleWords(String[][] words) { String vowels = "aeiou"; String temp = ""; for (int i=0; i < words.length; i++) { for (int j=0; j < words[i].length; j++) { if(vowels.contains(words[i][j].substring(0,1)) && j > 0){ temp = words[i][j]; words[i][j] = words [i][j-1]; words[i][j-1] = temp; } if(j == 0 && i > 0){ temp = words[i][j]; words[i][j] = words [i-1][j]; words[i-1][j] = temp; } if(!vowels.contains(words[i][j].substring(0,1))){ String s = words[i][j]; temp = s.substring(1,s.length()-1); String first = s.substring(0,1); String last = s.substring(s.length()-1,s.length()); words[i][j] = last + temp + first; } } } return words; }

运行时的输出
WordShuffleTester

答案 1 :(得分:0)

以下是我解决问题的方法:

//Input:
doom    candy   apple
orange  energy  rat
mad     test    cool
red     blue    drain

//Output:
orange  apple   candy    
mad     mood    tar  
red     test    looc     
energy  elub    nraid

}

希望这会有所帮助:)