从用户输入反转字符串

我写了代码以提示用户输入一个句子,该句子将被系统反向显示。我在一些帮助下进行了处理,但是现在我很难对我的代码进行注释以解释它的每一部分。我有点理解我的所作所为,但是我觉得我不掌握每一行的“原因”。

有人可以帮助我发表评论吗?

$ ./bin/readxyname
input: [123.456,789.34] Daffy Duck
x   : 123.456000
y   : 789.340000
name: Daffy Duck

最模糊的部分是:

$ ./bin/readxyname
input: [123.456,789.34]Daffy Duck
x   : 123.456000
y   : 789.340000
name: Daffy Duck

和:

$ input:  [        123.456,789.34  ]           Daffy Duck
x   : 123.456000
y   : 789.340000
name: Daffy Duck
liuxueyang1119 回答:从用户输入反转字符串

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

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

这是正在发生的事情的解释。

public static void main(String[] args) {
    String original = "",reverse = ""; // Create empty variables to hold the input and output
    Scanner in = new Scanner(System.in); // Create an object to read from StdIn

    while(!original.contains("exit"))
    // Read from StdIn as long as user does not input "exit"
    {
        original = "";
        reverse = "";
        System.out.println("Enter a sentence to be reversed: ");
        original = in.nextLine(); // Save the user's input as "original"

        int length = original.length(); // Get the length of the input
        for (int i = length - 1; i >= 0; i--) // Iterate over each character of the input,starting from the end until you reach the beginning and add the character to the "reverse" string
        reverse = reverse + original.charAt(i); 

        System.out.println(reverse); // Output the result
    }
}

有两个单独的注释来解释for循环并没有多大意义,因为两行中的每一行都没有其他意义。

,

了解

for (int i = length - 1; i >= 0; i--)
reverse = reverse + original.charAt(i);

您应该重新格式化以使其外观

for (int i = length - 1; i >= 0; i--)
    reverse = reverse + original.charAt(i);

for (int i = length - 1; i >= 0; i--) {
    reverse = reverse + original.charAt(i);
}

表示获取reverse变量中当前存储的内容,并在+ original.charAt(i)的末尾添加一个新字符。这样会产生一个新的String,该变量将被分配回reverse变量,像之前在其答案中提到的@agim一样覆盖其中的内容。

以下是您可以考虑的其他一些选择。特别是在使用StringBuilder的情况下,因为如果您想逐个字符地反转句子,则它内置了reverse()函数。

import java.util.*;

public class JavaFiddle
{
  public static void main(String[] args)
  {
    String sentence = "The quick brown fox jumps over the lazy dog";

    // Print sentence forward
    System.out.println(sentence);

    // Print sentence backwards by words
    String[] words = sentence.split(" ");
    for (int i = words.length - 1; i >= 0; i--) {
      System.out.print(words[i] + " ");
    }
    System.out.println();

    // Print sentence backwards by character
    for (int i = sentence.length() - 1; i >= 0; i--) {
      System.out.print(sentence.charAt(i));
    }
    System.out.println();

    // Print sentence backwards by character using StringBuilder;
    StringBuilder reverseSentence = new StringBuilder(sentence);
    System.out.println(reverseSentence.reverse());
  }
}

结果

The quick brown fox jumps over the lazy dog
dog lazy the over jumps fox brown quick The 
god yzal eht revo spmuj xof nworb kciuq ehT
god yzal eht revo spmuj xof nworb kciuq ehT
本文链接:https://www.f2er.com/3070230.html

大家都在问