0

我正在寻找一种在java中反转单词的方法。这是我的代码,它会发生错误。

有人可以解释为什么吗?

import java.util.Scanner;

public class Robot {

    public static void reverse(String text) {
        int leng = text.length();
        int i = 0;
        while (leng-i>=0){System.out.print(text.charAt(leng-i));
        i++;
        }
    }

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.println("Type in your text: ");
        String text = reader.nextLine();
        System.out.print("In reverse order: ");
        reverse(text);
    }

}

我希望它会颠倒单词的顺序,但事实并非如此。

4

2 回答 2

2

它应该是

int i = 1;

否则,您将得到一个StringIndexOutOfBoundsException因为text.length()永远不是有效索引。

为了让它更短(更酷),你可能想写

System.out.print(text.charAt(leng - i++));

虽然,我们通常这样做

System.out.print(new StringBuilder(text).reverse());
于 2019-09-23T13:29:12.287 回答
1

你的问题在这里:

int leng = text.length();

java中的数组是0索引的,这意味着字符串中的最后一个字符在索引(text.length()-1)处,而不是text.length()

因此,您可以设置lengtext.length()-1,也可以设置i1

于 2019-09-23T13:30:25.277 回答