[JAVA] Schnurpuzzle

Kopfübungen

Wenn Sie eine beliebige Zeichenfolge in die Konsole eingeben

YamadaTaro //input
a        r
m        a
a        T
d        a
a        d
T        a
a        m
r        a
oraTadamaY

Schreiben Sie den oben angezeigten Code.

Das ** "oraTadamaY" ** in der letzten Zeile scheint eine umgekehrte Methode gewesen zu sein, die Zeichenfolgen in umgekehrter Reihenfolge in der String-Klasse oder der StringBuilder-Klasse zurückgibt (denken Sie daran). Sie können dies verwenden.

Nun, der verbleibende Mittelteil. Dies bedeutet, dass (Zeichenfolgenlänge 2) Leerzeichen zwischen den Zeichen eingefügt werden. Dies bedeutet, dass die mit charAt () extrahierten Zeichen an beiden Enden der leeren Zeichenfolgengruppe verkettet werden sollten, die wiederholt mit den for-Anweisungen (Zeichenfolgenlänge 2) kombiniert wurde.

main.java


import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		String a = s.nextLine();

		StringBuilder sb = new StringBuilder(a);
		StringBuilder blank = new StringBuilder();

		int len = a.length();
		for (int i = 0; i < len - 2; i++) {
			blank.append(" ");
		}
		for (int j = 1; j < len - 1; j++) {
			System.out.println(a.charAt(j) + blank.toString() + a.charAt(len - j - 1));
		}
		System.out.println(sb.reverse());
    }
}

Ich wollte das gescannte Stinrg wirklich so behandeln, wie es ist, aber da ich die umgekehrte Methode verwenden musste, konvertiere ich String in StringBuilder.

Ich möchte nicht für (;;) verwenden, weil die Aussichten nicht so gut sind. Ich würde das erweiterte für oder während eher als das verwenden, aber da es scheint, dass nutzlose lokale Variablen zunehmen werden, werde ich für (;;) verwenden.

Wenn ich jetzt darüber nachdenke, habe ich das Gefühl, dass ich mit einem Zeichenarray (char []) und einer if-Anweisung arbeiten kann. In diesem Fall ist die Anzahl der Zeilen wahrscheinlich lang.

			System.out.println(a.charAt(j) + blank.toString() + a.charAt(len - j - 1));
		}```
 Der Schlusskurs von j ist len-1, daher ist der Index des Zeichens ganz rechts in den Zeilen 2-9 {(len-1) -j}. Ich denke, ** len-1-j ** ist leichter zu verstehen als ** (len --j --1)) ** oben.


Recommended Posts

Schnurpuzzle
String
Java-Zeichenfolge
Ersetzen von Zeichenketten
Lügner String
java.lang Zusammenfassung 2 (String)
String Buffer Übung
[Java] Auffüllen von Zeichenfolgen
MyBatis-Zeichenfolgenvergleich
Java-String-Verarbeitung
String-Klassenmethoden
Geteilter String (Java)