[Java] Ich möchte es einfacher machen, weil es schwierig ist, System.out.println einzugeben

Einführung

Während ich ein Janken-Rollenspiel in Java schrieb, war es ziemlich mühsam, jedes Mal "System.out.println" zu schreiben, also versuchte ich herauszufinden, wie ich es einfacher machen konnte.

Ich denke, dass es mit erweiterten Funktionen einfacher sein wird, aber dieses Mal werde ich es aus einer anderen Richtung versuchen.

** Der allgemeine Fluss ist **

--Erstellen Sie eine Methode für die Konsolenausgabe

Das Hauptthema von hier

In der Erklärung werde ich versuchen, mich nur auf eine der drei Klassen zu bewerben.

Code bisher

Judge.java


public class Judge {
	
	public void startJanken(Player player1, Player player2) {
		
		System.out.println("[Starten Sie Janken]\n");
		
		for (int cnt = 0;cnt < 3; cnt++) {
			System.out.println("["+(cnt+1)+"Runden]");
			
			//Bestimmen Sie, welcher gewonnen hat
			Player winner = judgeJanken(player1,player2);
			
			if(winner != null) {
				System.out.println("\n"+winner.getName()+"Gewonnen");
				winner.notifyResult(true);
			}else {
				System.out.println("Es ist eine Zeichnung");
			}
		}
		System.out.println("Ende von Janken");
		
		Player finalWinner = judgeFinalWinner(player1,player2);
		System.out.print(player1.getWinCount()+"gegen"+player2.getWinCount()+"damit");
		
		if (finalWinner != null) {
			System.out.println(finalWinner.getName()+"Ist der Gewinner");
		}else {
			System.out.println("Es ist eine Zeichnung");
		}
		
		
	}
	private Player judgeJanken(Player player1,Player player2) {
		Player winner = null;
		
		int player1hand = player1.showHand();
		int player2hand = player2.showHand();
		
		printHand(player1hand);
		System.out.print("vs.");
		printHand(player2hand);
		System.out.print("\n");
		
		if((player1hand == Player.stone && player2hand == Player.scissors)||
				(player1hand == Player.scissors && player2hand == Player.paper)||
				(player1hand == Player.paper && player2hand == Player.stone)) {
			winner = player1;
		}else if((player1hand == Player.stone && player2hand == Player.paper)||
				(player1hand == Player.scissors && player2hand == Player.stone)||
				(player1hand == Player.paper && player2hand == Player.scissors)) {
			winner = player2;
		}
		return winner;
	}
	private Player judgeFinalWinner(Player player1,Player player2) {
		Player winner = null;
		
		int player1WinCount = player1.getWinCount();
		int player2WinCount = player2.getWinCount();
		
		
		if(player1WinCount > player2WinCount) {
			winner = player1;
			
		}else if(player1WinCount < player2WinCount) {
			winner = player2;
			
		}
		return winner;
	}
	
	private void printHand(int hand) {
		
		switch(hand) {
		case Player.stone:
		System.out.print("Schmiere");
		break;
		
		case Player.scissors:
		System.out.print("Choki");
		break;
		
		case Player.paper:
		System.out.print("Par");
		break;
		
		default:
		break;
		}
	}

}

Versuchen Sie, eine Methode wie die folgende hinzuzufügen

       //Hier! !! !!
	public static void put(String str) {
		System.out.println(str);
	}

Anstatt "System.out.println" einzugeben, konnte ich dann nur "put" ausführen

Judge.java


public class Judge {
	
	public void startJanken(Player player1, Player player2) {
		
		put("[Starten Sie Janken]\n");
		
		for (int cnt = 0;cnt < 3; cnt++) {
			put("["+(cnt+1)+"Runden]");
			
			//Bestimmen Sie, welcher gewonnen hat
			Player winner = judgeJanken(player1,player2);
			
			if(winner != null) {
				put("\n"+winner.getName()+"Gewonnen");
				winner.notifyResult(true);
			}else {
				put("Es ist eine Zeichnung");
			}
		}
		put("Ende von Janken");
		
		Player finalWinner = judgeFinalWinner(player1,player2);
		System.out.print(player1.getWinCount()+"gegen"+player2.getWinCount()+"damit");
		
		if (finalWinner != null) {
			put(finalWinner.getName()+"Ist der Gewinner");
		}else {
			put("Es ist eine Zeichnung");
		}
		
		
	}
	private Player judgeJanken(Player player1,Player player2) {
		Player winner = null;
		
		int player1hand = player1.showHand();
		int player2hand = player2.showHand();
		
		printHand(player1hand);
		System.out.print("vs.");
		printHand(player2hand);
		System.out.print("\n");
		
		if((player1hand == Player.stone && player2hand == Player.scissors)||
				(player1hand == Player.scissors && player2hand == Player.paper)||
				(player1hand == Player.paper && player2hand == Player.stone)) {
			winner = player1;
		}else if((player1hand == Player.stone && player2hand == Player.paper)||
				(player1hand == Player.scissors && player2hand == Player.stone)||
				(player1hand == Player.paper && player2hand == Player.scissors)) {
			winner = player2;
		}
		return winner;
	}
	private Player judgeFinalWinner(Player player1,Player player2) {
		Player winner = null;
		
		int player1WinCount = player1.getWinCount();
		int player2WinCount = player2.getWinCount();
		
		
		if(player1WinCount > player2WinCount) {
			winner = player1;
			
		}else if(player1WinCount < player2WinCount) {
			winner = player2;
			
		}
		return winner;
	}
	
	private void printHand(int hand) {
		
		switch(hand) {
		case Player.stone:
		System.out.print("Schmiere");
		break;
		
		case Player.scissors:
		System.out.print("Choki");
		break;
		
		case Player.paper:
		System.out.print("Par");
		break;
		
		default:
		break;
		}
	}

       //Hier! !! !!
	public static void put(String str) {
		System.out.println(str);
	}
}


Es ist eine Methode, daher kann es beim Überqueren von Klassen etwas mühsam sein, aber es ist viel einfacher, lol

Über den Austausch

In meinem Fall wusste ich es auf dem Weg, also musste ich alles, was ich bisher geschrieben hatte, neu schreiben, um es zu setzen.

Ich habe gerade Linux studiert, also versuchen Sie es mit dem Befehl `` `sed```

Grundlegende Syntax des Befehls sed

~$ sed -e s/Zeichen vor dem Austausch/Ersetzter Charakter/g [Dateiname]

―― “-e” kann vorhanden sein oder nicht --Wenn g nicht eingegeben wird, ersetzen Sie nur das erste Zeichen

Es gibt verschiedene Dinge wie, aber ich werde sie hier weglassen.

Ersetzen Sie es jetzt am Terminal!

tarminal.



~$ sed -e s/System.out.println/put/g Judge.java 

public class Judge {
	
	public void startJanken(Player player1, Player player2) {
		
		put("[Starten Sie Janken]\n");
		
		for (int cnt = 0;cnt < 3; cnt++) {
			put("["+(cnt+1)+"Runden]");
			
			//Bestimmen Sie, welcher gewonnen hat
			Player winner = judgeJanken(player1,player2);
			
			if(winner != null) {
				put("\n"+winner.getName()+"Gewonnen");
				winner.notifyResult(true);
			}else {
				put("Es ist eine Zeichnung");
			}
		}
		put("Ende von Janken");
		
		Player finalWinner = judgeFinalWinner(player1,player2);

		:
                :
                :
                :

	public static void put(String str) {
		put(str);
	}
}

Überprüfen Sie die Datei

tarminal.


~$ cat Judge.java 

public class Judge {
	
	public void startJanken(Player player1, Player player2) {
		
		System.out.println("[Starten Sie Janken]\n");
		
		for (int cnt = 0;cnt < 3; cnt++) {
			System.out.println("["+(cnt+1)+"Runden]");
			
			//Bestimmen Sie, welcher gewonnen hat
			Player winner = judgeJanken(player1,player2);
			
			if(winner != null) {
				System.out.println("\n"+winner.getName()+"Gewonnen");
				winner.notifyResult(true);
			}else {
				System.out.println("Es ist eine Zeichnung");
			}
		}
		System.out.println("Ende von Janken");
		
		Player finalWinner = judgeFinalWinner(player1,player2);

		:
                :
                :
                :

	public static void put(String str) {
		System.out.println(str);
	}
}

Ich dachte, der Austausch wurde hier abgeschlossen, aber als ich ihn mit dem Editor überprüfte, wurde er nicht ersetzt. ..

Als ich es hier nachgeschlagen habe, war der Befehl sed nur in der Vorschau zu sehen und wurde nicht wirklich wiedergegeben.

Ich möchte, dass Sie es tatsächlich reflektieren. Wenn Sie es also nachschlagen Optional `` `-i``` (spiegelt sich direkt in der Datei wider)

Also werde ich es noch einmal versuchen

~$ sed -i -e s/System.out.println/put/g Judge.java





#### **`tarminal.`**

~$ cat Judge.java public class Judge {

public void startJanken(Player player1, Player player2) {
	
	put("[Starten Sie Janken]\n");
	
	for (int cnt = 0;cnt < 3; cnt++) {
		put("["+(cnt+1)+"Runden]");
		
		//Bestimmen Sie, welcher gewonnen hat
		Player winner = judgeJanken(player1,player2);
		
		if(winner != null) {
			put("\n"+winner.getName()+"Gewonnen");
			winner.notifyResult(true);
		}else {
			put("Es ist eine Zeichnung");
		}
	}
	put("Ende von Janken");
	
	Player finalWinner = judgeFinalWinner(player1,player2);

	:
            :
            :
            :

public static void put(String str) {
	put(str);
}

}


 Es wird fest reflektiert.


 Danach wurde auch die Methode ersetzt, daher frage ich mich, ob ich sie beheben sollte.


### Ergebnis
 Es wurde einfacher (^ ∀ ^)


Recommended Posts

[Java] Ich möchte es einfacher machen, weil es schwierig ist, System.out.println einzugeben
Ich möchte Apache Wicket 8 zusammenfassen, weil es eine gute Idee ist
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
[Java] Ich möchte Standardeingabe und Standardausgabe mit JUnit testen
Wenn Sie eine Java-Anwendung in ein Docker-Image verwandeln möchten, ist es praktisch, Jib zu verwenden.
Ich möchte den Rahmen des Textfelds rot machen, wenn ein Eingabefehler auftritt
Ich möchte eine ios.android App machen
[Java] Anfänger wollen Dating machen. 1
Ich möchte Java-Updates insgesamt stoppen
Festlegen eines Alias, da es schwierig ist, jedes Mal "Docker-Compose" einzugeben
R von Java ausführen Ich möchte rJava ausführen
Ich möchte eine E-Mail in Java senden.
Ich habe Java gemacht, um (a == 1 && a == 2 && a == 3) immer wahr zu machen
Ich möchte Java8 für jeden mit Index verwenden
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
rsync4j - Ich möchte rsync in Java berühren.
Ich möchte schnell von Java nach SQLite schreiben
[Android] Ich möchte die Qualitätssicherung vereinfachen ... Das stimmt! Lassen Sie uns ein Debug-Menü erstellen!
Ich möchte es zusätzlich implementieren, während ich Kotlin auf einer Site verwende, auf der Java ausgeführt wird
Ich möchte so etwas wie "cls" in Java machen
Ich möchte ES2015 auch in Java verwenden! → (´ ・ ω ・ `)
Ich habe jnr-ffi verwendet (einfacher zu bedienen usw.)
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
Ich habe nc (netcat) normalerweise mit JAVA gemacht
Ich möchte herausfinden, welche Java-Version die JAR-Datei hat, die ich habe
Ich möchte mit Java8 StreamAPI redu () einen anderen Typ als das Eingabeelement zurückgeben.
[Java] Ich möchte ein Byte-Array in eine Hexadezimalzahl konvertieren
Ich möchte Java Applet ohne Verwendung einer IDE erstellen
Ich möchte ein bestimmtes Modell von ActiveRecord ReadOnly erstellen
Verwechseln Sie Docker mit Pokemon und erleichtern Sie das Anhängen
Ich wollte nur eine reaktive Eigenschaft in Java erstellen
Ich möchte die Java 8 DateTime-API (jetzt) langsam verwenden.
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Ich habe einen RESAS-API-Client in Java erstellt
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
Ich möchte mehrere Rückgabewerte für das eingegebene Argument zurückgeben
Ich möchte die if-else-Anweisung für bedingte Verzweigungen in Java vereinfachen
Java - So erstellen Sie JTable
Ich möchte Zeichen konvertieren ...
[Java] Mach es konstant
Eingabe in die Java-Konsole
Ist es möglich, Getter / Setter automatisch mit Java Interface zu generieren?
Ich möchte mit link_to [Hinweis] eine Schaltfläche mit einem Zeilenumbruch erstellen.
Ich möchte nur Java mit Eclipse auf meinem Mac schreiben
Ich möchte mit Kotlin und Java zum vorherigen Bildschirm zurückkehren!
Ich habe versucht, eine Android-Anwendung mit MVC zu erstellen (Java)
Ich möchte die Eingabe begrenzen, indem ich den Zahlenbereich einschränke
Ich wollte die JavaFX-Programmierung mit dem Spring Framework vereinfachen
Ich habe versucht, mithilfe von Routing-Verschachtelung eine beliebige URL zu erstellen
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
[Anmerkung] Java: Ist es notwendig, Gleichheit für die Beurteilung der Gleichheit zu überschreiben?
[Java] Ich möchte mit dem Schlüssel im Objekt eindeutig arbeiten
Ich habe versucht, einen Numeron zu erstellen, der mit Ruby nicht gut ist