java - 从用户输入中反转字符串
问题描述
我编写了代码来提示用户输入一个将被系统反转显示的句子。我已经在一些帮助下管理了它,但我现在很难评论我的代码来解释它的每一部分。我有点明白我做了什么,但我觉得我没有掌握每一行的“为什么”。
任何人都可以帮助我的评论?
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);
解决方案
好吧,让我们用“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'
推荐阅读
- java - org.springframework.web.client.ResourceAccessException:POST 请求上的 I/O 错误
- python-3.x - 创建事件标志
- r - 使用 lpSolveAPI 设置依赖于所选变量的求解器约束
- azure - 将电子邮件通道添加到 Microsoft Bot Framework 显示超时错误
- apache-kafka - 类 org.apache.kafka.abstracts.serialization.StringDeserializer 找不到
- machine-learning - 神经网络中的反向传播和前向传播
- angular - 如何转换两个 oberables 流
- android - Exoplayer View 找不到 player.prepare() 函数
- list - 球拍在函数中交换列表的第一个和第三个元素?
- wordpress - 发送帖子时update_callback没有调用正确的函数