关于 JAVA 的单词反转顺序的基本 Java 编码问题

basic Java coding question about reversing order of words for JAVA

我正在寻找一种方法来反转 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);
    }

}

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

应该是

int i = 1;

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

为了使其更短(更酷),您可能需要编写

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

不过,we usually do

System.out.print(new StringBuilder(text).reverse());

你的问题在这里:

int leng = text.length();

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

所以,您可以将leng设置为text.length()-1,或者您可以将i设置为1