あなたは、多くのゲームを作成しようとしている場合は、私はあなたがGame
クラスを作る推薦します2つの文字列と2つの整数値ではなく、Game
オブジェクトの管理が容易になるためです。 Game
オブジェクトでは、Game
オブジェクトのtoString
メソッドを使用して、希望の文字列出力を出力することもできます。ユーザー入力を取得するとき、私が使用した基準は、チーム名を空白にすることはできず、チームの得点は0未満にならないようなものです。ユーザーが空文字列または無効な整数を入力すると、無効な入力を示すメッセージを出力し、ユーザーに有効な入力が得られるまで再試行させてください。このときに終了したい場合は、ユーザーが無効なデータを入力したときにプログラムを正常に終了するためにこれを変更することができます。
私は主に2つのメソッドを作成しました.1つは有効なStringのチーム名を取得し、もう1つはスコアの有効なIntegerを取得するメソッドです。また、ユーザーが無効なデータを入力すると、入力が有効になるまでループします。
ゲームクラス:
public class Game
{
String homeTeam = "";
String awayTeam = "";
int homeScore = -1;
int awayScore = -1;
public Game(String inHomeTeam, int inHomeScore, String inAwayTeam, int inAwayScore)
{
super();
this.homeTeam = inHomeTeam;
this.awayTeam = inAwayTeam;
this.homeScore = inHomeScore;
this.awayScore = inAwayScore;
}
@Override
public String toString()
{
return homeTeam + "[" + homeScore + "] | " + awayTeam + "[" + awayScore + "]";
}
public String getHomeTeam() {
return homeTeam;
}
public void setHomeTeam(String homeTeam) {
this.homeTeam = homeTeam;
}
public String getAwayTeam() {
return awayTeam;
}
public void setAwayTeam(String awayTeam) {
this.awayTeam = awayTeam;
}
public int getHomeScore() {
return homeScore;
}
public void setHomeScore(int homeScore) {
this.homeScore = homeScore;
}
public int getAwayScore() {
return awayScore;
}
public void setAwayScore(int awayScore) {
this.awayScore = awayScore;
}
}
メイン
public class Main
{
static Scanner scanner = new Scanner(System.in);
static Game[] allGames;
static String homeTeam = "";
static String awayTeam = "";
static int homeScore = -1;
static int awayScore = -1;
static int numberOfGames = 0;
public static void main(String[] args)
{
numberOfGames = GetUserInt("How many games do you want to enter - 100 or less: ");
if (numberOfGames > 100)
numberOfGames = 100;
allGames = new Game[numberOfGames];
for (int i = 0; i < numberOfGames; i++) {
homeTeam = GetUserString("Enter the home team name: ");
homeScore = GetUserInt("Enter the home team score: ");
awayTeam = GetUserString("Enter the away team name: ");
awayScore = GetUserInt("Enter the away team score: ");
allGames[i] = new Game(homeTeam, homeScore, awayTeam, awayScore);
}
// output the users games
for(Game curGame : allGames)
{
if (curGame != null)
System.out.println(curGame.toString());
}
}
private static String GetUserString(String prompt)
{
String input = "";
while(true) {
System.out.print(prompt);
input = scanner.nextLine();
if (input.length() > 0)
return input;
else
System.out.println("Invalid input: Can not be empty string!");
}
}
private static int GetUserInt(String prompt)
{
String input = "";
while(true) {
System.out.print(prompt);
input = scanner.nextLine();
if (input.length() > 0) {
if (isValidInt(input)) {
int value = Integer.parseInt(input);
if (value >= 0) {
return value;
}
else {
System.out.println("Invalid input: Score can not be negative");
}
}
else {
System.out.println("Invalid input: Score must be a valid integer");
}
}
else {
System.out.println("Invalid input: Score can not be empty");
}
}
}
private static boolean isValidInt(String inString)
{
try {
Integer.parseInt(inString);
return true;
}
catch (NumberFormatException e) {
return false;
}
}
}
・ホープ、このことができます!
どのようなエラーが発生しているのかを伝える必要があります。 – Carcigenicate
これはスキャナー入力を取得する非常に一般的な方法ではなく、間違いなく最も簡単な方法です。正しいscanner.next関数を使用して4つの別々の変数を取得する必要があります。なぜ誰かに尋ねることができるときに、一度にすべてを入れるように依頼するのですか?これにより、値を入力できなくなります。 –
@ s.gangこれを手伝ってもらえますか?私はJavaを初めて使用しています –