如何在 Java 中重复 public class?
How can I repeat a public class in Java?
我寻找了很长时间在 Java 中重复 public class 的可能性,我找到了一个解决方案,继续并重复一个额外的 while 循环。但是我真的不满意,有没有更简单的方法呢?
感谢您的帮助。
import java.util.Random;
import java.util.Scanner;
public class Zufallszahl {
public static void main(String[] args) {
while (1 == 1) {
Random rn = new Random();
Scanner numberScan = new Scanner(System.in);
Scanner restartScan = new Scanner(System.in);
int zahl = rn.nextInt(100 - 1) + 1;
int number = 0;
String restart = "";
int a = 0;
while (number != zahl) {
a++;
System.out.print("Rate eine Zahl zwischen 0 und 100: ");
number = numberScan.nextInt();
if (number == zahl) {
System.out.println("richtig");
System.out.println("Du hast " + a + " Versuche gebraucht!");
System.out.print("Nochmal? j/n: ");
restart = restartScan.nextLine();
}
if (number < zahl) {
System.out.println("zu klein");
}
if (number > zahl) {
System.out.println("zu gross");
}
}
if (restart.equalsIgnoreCase("j")) {
continue;
} else if (restart.equalsIgnoreCase("n")) {
System.out.println("Tschüss!");
return;
}
}
}
}
嘿,你的代码可以工作,但你应该考虑像这样开始编写更多面向对象的代码:
public class Filesplitter {
/**
* @param args the command line arguments
*/
public static int eingabe;
public static int rnd;
public static Scanner sc = new Scanner(System.in);
public static Random rn = new Random();
public static int counter = 0;
public static boolean a = true;
public static void main(String[] args) throws IOException {
while (a = true){
eingabe = 0;
rnd = rn.nextInt(100 - 1)+1;
while (!zahlCheck()){
eingabezahl();
}
System.out.print("möchten sie noch mal spielen ? j/n: ");
if(sc.next().equals("j")){
a = true;
}
else {
a = false;
}
}
}
public static boolean zahlCheck(){
if(eingabe == 0){
}
else if(eingabe != rnd){
if(eingabe < rnd)
System.out.println("Die zahl ist zu klein");
else
System.out.println("Die zahl ist zu groß");
return false;
}else {
System.out.println("Richtig !\n Du hast "+counter+" Versuche gebraucht.");
return true;
}
return false;
}
public static int eingabezahl(){
System.out.println("Bitte geben sie eine Zahl ein:");
eingabe = sc.nextInt();
counter +=1;
return 1;
}
}
这将使事情变得更容易,因为您可以在循环中调用您的方法 ;)
关于重新启动 - 这似乎很奇怪,除非您将其提取到一个对象中。所以解决方案 1 可能只是 运行 循环并通过检查第二个重启来摆脱第一个:
while (number != zahl || restart.equalsIgnoreCase("j")) { ... }
请注意,您需要更改逻辑以重新评估新的随机数。或者,可以通过创建允许您执行它的游戏 class 来重新启动。例如:
public class Zufallszahl {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Game g = new Game();
Random rn = new Random();
while(true) {
g.start(rn.nextInt(100 -1) + 1, s);
System.out.println("Noch ne Runde? Y/N");
String response = s.next();
if(response.equalsIgnoreCase("n")) return;
}
}
public static class Game {
public void start(final int numberToGuess, final Scanner s) {
int number = 0;
int a = 0;
while (number != numberToGuess ) {
a++;
System.out.print("Rate eine Zahl zwischen 0 und 100: ");
number = s.nextInt();
if (number == numberToGuess) {
System.out.println("richtig");
System.out.println("Du hast " + a + " Versuche gebraucht!");
return;
}
if (number < numberToGuess) {
System.out.println("zu klein");
}
if (number > numberToGuess) {
System.out.println("zu gross");
}
}
}
}
}
此致,
我寻找了很长时间在 Java 中重复 public class 的可能性,我找到了一个解决方案,继续并重复一个额外的 while 循环。但是我真的不满意,有没有更简单的方法呢? 感谢您的帮助。
import java.util.Random;
import java.util.Scanner;
public class Zufallszahl {
public static void main(String[] args) {
while (1 == 1) {
Random rn = new Random();
Scanner numberScan = new Scanner(System.in);
Scanner restartScan = new Scanner(System.in);
int zahl = rn.nextInt(100 - 1) + 1;
int number = 0;
String restart = "";
int a = 0;
while (number != zahl) {
a++;
System.out.print("Rate eine Zahl zwischen 0 und 100: ");
number = numberScan.nextInt();
if (number == zahl) {
System.out.println("richtig");
System.out.println("Du hast " + a + " Versuche gebraucht!");
System.out.print("Nochmal? j/n: ");
restart = restartScan.nextLine();
}
if (number < zahl) {
System.out.println("zu klein");
}
if (number > zahl) {
System.out.println("zu gross");
}
}
if (restart.equalsIgnoreCase("j")) {
continue;
} else if (restart.equalsIgnoreCase("n")) {
System.out.println("Tschüss!");
return;
}
}
}
}
嘿,你的代码可以工作,但你应该考虑像这样开始编写更多面向对象的代码:
public class Filesplitter {
/**
* @param args the command line arguments
*/
public static int eingabe;
public static int rnd;
public static Scanner sc = new Scanner(System.in);
public static Random rn = new Random();
public static int counter = 0;
public static boolean a = true;
public static void main(String[] args) throws IOException {
while (a = true){
eingabe = 0;
rnd = rn.nextInt(100 - 1)+1;
while (!zahlCheck()){
eingabezahl();
}
System.out.print("möchten sie noch mal spielen ? j/n: ");
if(sc.next().equals("j")){
a = true;
}
else {
a = false;
}
}
}
public static boolean zahlCheck(){
if(eingabe == 0){
}
else if(eingabe != rnd){
if(eingabe < rnd)
System.out.println("Die zahl ist zu klein");
else
System.out.println("Die zahl ist zu groß");
return false;
}else {
System.out.println("Richtig !\n Du hast "+counter+" Versuche gebraucht.");
return true;
}
return false;
}
public static int eingabezahl(){
System.out.println("Bitte geben sie eine Zahl ein:");
eingabe = sc.nextInt();
counter +=1;
return 1;
}
}
这将使事情变得更容易,因为您可以在循环中调用您的方法 ;)
关于重新启动 - 这似乎很奇怪,除非您将其提取到一个对象中。所以解决方案 1 可能只是 运行 循环并通过检查第二个重启来摆脱第一个:
while (number != zahl || restart.equalsIgnoreCase("j")) { ... }
请注意,您需要更改逻辑以重新评估新的随机数。或者,可以通过创建允许您执行它的游戏 class 来重新启动。例如:
public class Zufallszahl {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Game g = new Game();
Random rn = new Random();
while(true) {
g.start(rn.nextInt(100 -1) + 1, s);
System.out.println("Noch ne Runde? Y/N");
String response = s.next();
if(response.equalsIgnoreCase("n")) return;
}
}
public static class Game {
public void start(final int numberToGuess, final Scanner s) {
int number = 0;
int a = 0;
while (number != numberToGuess ) {
a++;
System.out.print("Rate eine Zahl zwischen 0 und 100: ");
number = s.nextInt();
if (number == numberToGuess) {
System.out.println("richtig");
System.out.println("Du hast " + a + " Versuche gebraucht!");
return;
}
if (number < numberToGuess) {
System.out.println("zu klein");
}
if (number > numberToGuess) {
System.out.println("zu gross");
}
}
}
}
}
此致,