反向打印数组中的单词

Printing words from an array in reverse

我有一个任务需要从数组中反向打印单词(单词本身)。这就是任务状态:

  1. 创建一个名为“wordList”的单词数组,并分配值“Stressed”、“Parts”、“Straw”、“Keep”、“Wolf”

  2. 创建一个名为“reversedWord”的字符串并且不为其赋值。

  3. 与上述挑战类似,但是,不是颠倒句子,而是颠倒字母的顺序

在每个字符串中。

一个。您将需要创建一个 for 循环来依次访问每个单词。立即在循环内设置

‘reversedWord = “”;’

b。然后在第一个内部创建另一个 for 循环以向后迭代当前

字。每次迭代更新‘reversedWord’的值。

c。在屏幕上打印反转的单词。

延伸挑战:处理单词,使其正确地倒着读。 (压力变成甜点)

我不知道我是否只是不理解任务的措辞,但这是我目前的代码:

String[] wordList = {"Stressed", "Parts", "Straw", "Keep", "Wolf"};
String reversedWord;

for (int i = wordList.length; i >= 0; i++) {
    reversedWord = "";
    for (int j = wordList[i].length() - 1; i >= 0; j--) {
        reversedWord += wordList[i].charAt(j);
        System.out.println(reversedWord);
    }
}

当我 运行 它给了我这个错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
    at Main.main(Main.java:22)

任何帮助解释都会有所帮助。

这里有一些问题。在行

for (int i = wordList.length; i >= 0; i++) {

您将 i 设置为 wordList 的长度,即 5。不过请记住,数组索引从 0 开始。因此 wordList 的有效索引为 0、1、2、3 , 和 4,但不是 5。要解决此问题,您只需从长度中减去 1。

for (int i = wordList.length - 1; i >= 0; i++) {

下一个问题是您在每个循环结束时增加 i。由于您似乎在尝试向后迭代,因此您会想要减少 i,而不是增加它。

for (int i = wordList.length - 1; i >= 0; i--) {

有一个更简单的解决方案,使用 Java 的 StringBuilder class:

public static void main(String[] args) {
    String[] wordList = {"Stressed", "Parts", "Straw", "Keep", "Wolf"};
    for (int i = 0; i < wordList.length; i++) {
        String word = wordList[i]; // Get the word from array
        word = new StringBuilder(word).reverse().toString(); // use StringBuilder to reverse the word
        wordList[i] = word; // put word back in the array
    }        
    System.out.println(Arrays.asList(wordList));
}

这输出

[dessertS, straP, wartS, peeK, floW]

更新: 为了正确阅读单词(第一个字符大写),您可以这样做:

word = word.toLowerCase();
word = word.replace(word.substring(0,1), word.substring(0,1).toUpperCase());
wordList[i] = word; // put word back in the array

有更有效的方法可以做到这一点,但对您来说更容易理解。这显然输出:

[Desserts, Strap, Warts, Peek, Flow]

substring(0,1) returns 第一个字符(从索引 0 到索引 1 的子字符串;其中最后一个索引不包括在内)作为 String。然后,您将用大写子字符串替换相同的子字符串。