使用循环反转字符串

Using loops to reverse a string

我在执行某人输入多行字符串的任务时遇到问题,我读取该字符串并在完全相同的位置(空格和换行符相同)反向输出每个单词。在输入用户想要反转的字数后,他们键入“完成”以基本上停止循环。

例如。输入:

hey hello
world
done

输出:

yeh olleh
dlrow

这是我的代码,其中循环从不停止并且不扫描第二行。

import java.util.Scanner;

public class LabProgram {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);

        String input = scnr.next();
        String reverse = "";

        while (!input.equals("done")) {
            for (int i = input.length() - 1; i >= 0; i--) {
                reverse = reverse + input.charAt(i);
            }
            System.out.println(reverse);
        }
    }
}

要打印输入单词的循环是这样的:

Scanner scnr = new Scanner(System.in);
String input = scnr.next();

for (int i=input.length()-1; i >= 0; --i) {
    System.out.print(input.charAt(i));
}

请注意,我使用 print() 而不是 println(),因为您想在同一行上查看反向输入。

至于在循环 运行 时接受用户输入,如果需要,您应该 break 根据某些用户输入停止打印。

你很接近。我只是稍微更改了您的外部 while 循环,以接受输入并检查终止字符串。它现在将反转您输入的内容,但如果您输入 done.

则会停止
public static void main(String[] args) {
    Scanner scnr = new Scanner(System.in);
    String input;
    while (!(input = scnr.nextLine()).equalsIgnoreCase("Done")) {
    
    String reverse = "";
    
        for (int i = input.length() - 1; i >= 0; i--) {
            reverse = reverse + input.charAt(i);
        }
        System.out.println(reverse);
    }
}

为了简化代码,您可以使用 增强的 for 循环 而不是 反向循环 并交换内部的加数:

String str = "hello world", reverse = "";

for (char ch : str.toCharArray())
    reverse = ch + reverse;

System.out.println(reverse); // dlrow olleh