ここで数当てゲームをいじります。2 つの方法があります。Number というオブジェクト クラスを作成し、getter と setter などをnumber.setPlayerNumber
使用number.getPlayerNumber
してから、if ステートメントで使用して勝者を決定できます。
これは、静的変数を使用する必要がなく、メソッドのスコープ内にとどまることを意味します(後で面倒になりませんか?(しかし、メインメソッドが乱雑に見える可能性がありますか?...))
import java.util.Random;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class NumberGuess {
static Number number = new Number();
static boolean win;
public static void main(String[] args) {
int cpuNumber = generateNumber();
int playerNumber = playerNumber();
printResults();
winCondition();
}
public static int generateNumber() {
System.out.println("Generating a number");
System.out.println("Done!");
Random rand = new Random();
int cpuNumber = rand.nextInt(10) + 1;
number.setCpuNumber(cpuNumber);
return cpuNumber;
}
public static int playerNumber() {
Scanner userInput = new Scanner(System.in);
String playerNum = JOptionPane.showInputDialog(null, "Enter a number between 1 and 10",
"Player Turn", JOptionPane.INFORMATION_MESSAGE);
number.setPlayerNumber(Integer.parseInt(playerNum));
return Integer.parseInt(playerNum);
}
public static void printResults(){
System.out.println("The computers number was: " + number.getCpuNumber());
System.out.println("Your number was: " + number.getPlayerNumber());
}
public static void winCondition(){
if(number.getCpuNumber() != number.getPlayerNumber()){
if(number.getPlayerNumber() < number.getCpuNumber()){
System.out.println("You lose!\n"
+ "Guess too low!");
}else{
System.out.println("You lose!\n"
+ "Guess too high!");
}
}
if(number.getPlayerNumber() == number.getCpuNumber()){
System.out.println("You have guessed correct. You win!");
}
}
}
return メソッドを使用することもできます。つまり、決定に使用するメソッドで変数を使用するには、すべての変数を静的にする必要があります。
import java.util.Random;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class NumberGuess {
static Number number = new Number();
static int cpuNumber = generateNumber();
static int playerNumber = playerNumber();
static boolean win;
public static void main(String[] args) {
printResults();
winCondition();
}
public static int generateNumber() {
System.out.println("Generating a number");
System.out.println("Done!");
Random rand = new Random();
int cpuNumber = rand.nextInt(10) + 1;
return cpuNumber;
}
public static int playerNumber() {
Scanner userInput = new Scanner(System.in);
String playerNum = JOptionPane.showInputDialog(null, "Enter a number between 1 and 10",
"Player Turn", JOptionPane.INFORMATION_MESSAGE);
return Integer.parseInt(playerNum);
}
public static void printResults(){
System.out.println("The computers number was: " + number.getCpuNumber());
System.out.println("Your number was: " + number.getPlayerNumber());
}
public static void winCondition(){
if(cpuNumber != playerNumber()){
if(playerNumber() < cpuNumber){
System.out.println("You lose!\n"
+ "Guess too low!");
}else{
System.out.println("You lose!\n"
+ "Guess too high!");
}
}
if(playerNumber == cpuNumber){
System.out.println("You have guessed correct. You win!");
}
}
}
優れたプログラミング実践の観点から、より効率的なものは何ですか?