JAVA 在多行输出中反转字符串

JAVA Reversing a string on multiple lines output

为什么在我的程序中我在一行中得到输出?像 abc123...我希望我的输出打印在多行上,就像我的输入一样..

import java.util.Scanner;

 class Reverse
 {
   public static void main(String args[])
   {
      String original;
      String reverse = "";

      Scanner kbd = new Scanner(System.in);

      while (kbd.hasNextLine()) {
        original = kbd.nextLine();

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

       reverse = reverse + original.charAt(i);
        }
      }
        System.out.println(reverse);
   }
 }

例如应该是这样的:

input: abc
       123
       ...
output:cba
       321
       ...

您在一行中获得输出,因为您使用的是 System.out.printf()。请改用 System.out.println()

PS:反转字符串的更简单方法是使用 StringBuilder 中的 reverse()。

reverse = new StringBuilder(original).reverse().toString();
import java.io.*;
import java.util.*;

public class reverseString {
    public static void main(String[] args) {
        String input="";
        System.out.println("Enter the input string");
        try
        {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            input = br.readLine();
            char[] try1= input.toCharArray();
            for (int i=try1.length-1;i>=0;i--)
            System.out.print(try1[i]);
        }
        catch (IOException e) {
            e.printStackTrace();
        }
}}

这是一种方法:

import java.util.Scanner;

class Reverse {
    public static void main(String args[])
    {
        String original;
        String reverse = "";

        Scanner kbd = new Scanner(System.in);


        StringBuilder output = new StringBuilder();

        while (kbd.hasNextLine()) 
        {
            original = kbd.nextLine();
            StringBuilder sb = new StringBuilder(original);
            output.append(sb.reverse().toString()).append("\n");
        }
        System.out.println(output.toString());
    }
}

EDIT 我注意到在您的问题中,您似乎只想在提供所有输入后打印输出。我修改了原始答案中的代码来执行此操作。

试试这个:

 package Whosebug;
    import java.util.Scanner;
     class Reverse
     {
       public static void main(String args[])
       {
          String original;
          String reverse = "";

          Scanner kbd = new Scanner(System.in);

          while (kbd.hasNextLine()) {
            original = kbd.nextLine();
            //befor you add the reversed string add a jump line firs
            if(reverse.length()>0)reverse=reverse+"\n";

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

           reverse = reverse + original.charAt(i);
            }
          }
            System.out.println(reverse);
       }
     }

你应该改变这部分

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 = reverse + '\n';

这将添加换行符。

我有一个建议给你 - 使用 StringBuilder 新的反向字符串 像这样:

public static void main(String args[]) {
    String original;
    StringBuilder sbReverse = new StringBuilder();

    Scanner kbd = new Scanner(System.in);
    while (kbd.hasNextLine()) {
        original = kbd.nextLine();

        int length = original.length();
        for (int i = length - 1; i >= 0; i--) {
            sbReverse.append(original.charAt(i));
        }
        sbReverse.append('\n');
    }

    System.out.println(sbReverse.toString());
}

原因 - 在 Java 中,字符串是不可变的。 这意味着每次执行 reverse = reverse + original.charAt(i); 都会在内存中创建一个新字符串。