JAVA在多行输出上反转一个字符串

时间:2016-04-03 08:39:43

标签: java loops while-loop reverse

为什么在我的程序中我将输出放在一行上?像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
       ...

5 个答案:

答案 0 :(得分:1)

def guessinggame ():
    d = input("Enter a random word: ")
    e = input("How many letters does the word has?: ")
    f = len(d)
    if( "e" == len(d)):
       print("You are right!")
guessinggame()

答案 1 :(得分:1)

这是一种方法:

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());
    }
}

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

答案 2 :(得分:1)

试试这个:

 package stackoverflow;
    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);
       }
     }

答案 3 :(得分:1)

您应该更改此部分

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

in

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);时,都会在内存中创建一个新字符串。

答案 4 :(得分:0)

由于您使用的是System.out.printf(),因此您只需输出一行。请改用System.out.println()

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

reverse = new StringBuilder(original).reverse().toString();