首页 > 解决方案 > 从用户输入中反转字符串

问题描述

我编写了代码来提示用户输入一个将被系统反转显示的句子。我已经在一些帮助下管理了它,但我现在很难评论我的代码来解释它的每一部分。我有点明白我做了什么,但我觉得我没有掌握每一行的“为什么”。

任何人都可以帮助我的评论?

public static void main(String[] args) {
    // TODO Auto-generated method stub

    String original = "", reverse = ""; // Setting the strings values
    Scanner in = new Scanner(System.in); // Scanner is equal to input from user

    while(!original.contains("exit"))
    // As long as user does not input "exit", user will be prompt to enter a sentence
    {
        original = "";
        reverse = "";
        System.out.println("Enter a sentence to be reversed: ");
        original = in.nextLine(); // Setting "original" to be equal to user's input

        int length = original.length(); // Getting user's input character length (original)
        for (int i = length - 1; i >= 0; i--) // Getting input from the last character to be reversed
        reverse = reverse + original.charAt(i); //Setting "reverse" to the input "original" characters

        System.out.println(reverse); // Printing the input reversely
    }

}

最模糊的部分是:

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

和:

reverse = reverse + original.charAt(i);

标签: javareversecharat

解决方案


好吧,让我们用“HELLO”作为输入来看看它。您可以看出,字符串的长度为 5,第一个字母 (H) 的索引为 0,第二个字母为 1,...最后一个字母的索引为 4,顺便说一句。是length -i。循环for (int i = length - 1; i >= 0; i--)从最后一个字母开始,然后是倒数第二个,依此类推,并以相反的顺序将每个字母附加到反向字符串。一般来说,在循环中,您将执行以下操作:

  • reverse = reverse + original.CharAt(4)=> 反向='O'
  • reverse = reverse + original.CharAt(3)=> 反向='OL'
  • reverse = reverse + original.CharAt(2)=> 反向='OLL'
  • reverse = reverse + original.CharAt(1)=> 反向='OLLE'
  • reverse = reverse + original.CharAt(0)=> 反向='OLLEH'

推荐阅读