2016-04-03 9 views
1

Warum in meinem Programm bekomme ich die Ausgabe auf einer einzelnen Linie? wie abc123 ... mag ich meine Ausgabe auf mehreren Zeilen gedruckt werden, genau wie meine Eingaben ..JAVA Eine Zeichenkette auf mehreren Linien umkehren

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

Es zum Beispiel so sein sollte:

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

Bitte den Code richtig einrücken. – Oisin

Antwort

1

Hier ist eine Art und Weise tun:

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 ich, dass in Ihrer Frage bemerkt es scheint, dass Sie nur die Ausgabe drucken möchten, nachdem alle eingegeben worden ist unter der Voraussetzung. Ich habe den Code von meiner ursprünglichen Antwort geändert, um dies zu tun.

+0

Sorry, aber es ist nicht wie ich es will, ich möchte alle Eingaben auf mehreren Zeilen eingeben, und drücken Sie dann STRG + D, um EOF zu erreichen und alle Ausgänge auf mehreren Zeilen zu bekommen. Danke für Ihre Hilfe anyways –

+0

Sehen Sie sich den Code noch einmal an. Ich habe es aktualisiert, wie Sie kommentierten :) –

+0

Vielen Dank! Genau so wollte ich es! schätzen es –

0

Sie zum Ausgang in einer einzigen Zeile, weil Sie System.out.printf() verwenden. Verwenden Sie stattdessen System.out.println().

PS: Eine einfachere Möglichkeit, eine Zeichenfolge umzukehren, wäre die Verwendung von reverse() von StringBuilder.

reverse = new StringBuilder(original).reverse().toString(); 
1
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(); 
     } 
}} 
1

versuchen Sie dies:

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

Sie sollten diesen Teil ändern

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'; 

Diese neue Linie Charakter hinzufügen.

Ich habe einen Rat für Sie - StringBuilder Reverse für neue Zeichenfolge verwenden So:

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

Der Grund - in Java, Strings sind unveränderlich. Das bedeutet, dass bei jeder Ausführung reverse = reverse + original.charAt(i); eine neue Zeichenfolge im Speicher erstellt wird.