Java getter和setter还是返回方法?
在这里玩猜数字游戏,我有两种方法。我可以创建一个名为Number的对象类,然后在if语句中使用getter和setter,例如Java getter和setter还是返回方法?,java,Java,在这里玩猜数字游戏,我有两种方法。我可以创建一个名为Number的对象类,然后在if语句中使用getter和setter,例如Number.setPlayerNumber,然后使用Number.getPlayerNumber,来确定获胜者 这意味着我将不需要使用静态变量,它们将只保留在方法的范围内(这样以后就不那么麻烦了?(但会使主方法看起来很混乱?…) import java.util.Random; 导入java.util.Scanner; 导入javax.swing.JOptionPane
Number.setPlayerNumber
,然后使用Number.getPlayerNumber
,来确定获胜者
这意味着我将不需要使用静态变量,它们将只保留在方法的范围内(这样以后就不那么麻烦了?(但会使主方法看起来很混乱?…)
import java.util.Random;
导入java.util.Scanner;
导入javax.swing.JOptionPane;
公共类编号{
静态编号=新编号();
静态布尔赢;
公共静态void main(字符串[]args){
int cpuNumber=generateNumber();
int playerNumber=playerNumber();
打印结果();
winCondition();
}
公共静态int-generateNumber(){
System.out.println(“生成一个数字”);
System.out.println(“完成!”);
Random rand=新的Random();
int cpuNumber=rand.nextInt(10)+1;
编号:setCpuNumber(cpuNumber);
返回cpuNumber;
}
公共静态int playerNumber(){
扫描仪用户输入=新扫描仪(System.in);
String playerNum=JOptionPane.showInputDialog(null,“输入一个介于1和10之间的数字”,
“玩家回合”,JOptionPane.信息(信息);
number.setPlayerNumber(Integer.parseInt(playerNum));
返回整数.parseInt(playerNum);
}
公共静态无效打印结果(){
System.out.println(“计算机编号为:”+number.getCpuNumber());
System.out.println(“您的号码是:”+number.getPlayerNumber());
}
公共静态无效条件(){
if(number.getCpuNumber()!=number.getPlayerNumber()){
if(number.getPlayerNumber()
我也可以继续使用返回方法。这意味着我需要使每个变量都是静态的,以便在使用它们进行决策的方法中使用它们
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!");
}
}
import java.util.Random;
导入java.util.Scanner;
导入javax.swing.JOptionPane;
公共类编号{
静态编号=新编号();
静态int cpuNumber=generateNumber();
静态int playerNumber=playerNumber();
静态布尔赢;
公共静态void main(字符串[]args){
打印结果();
winCondition();
}
公共静态int-generateNumber(){
System.out.println(“生成一个数字”);
System.out.println(“完成!”);
Random rand=新的Random();
int cpuNumber=rand.nextInt(10)+1;
返回cpuNumber;
}
公共静态int playerNumber(){
扫描仪用户输入=新扫描仪(System.in);
String playerNum=JOptionPane.showInputDialog(null,“输入一个介于1和10之间的数字”,
“玩家回合”,JOptionPane.信息(信息);
返回整数.parseInt(playerNum);
}
公共静态无效打印结果(){
System.out.println(“计算机编号为:”+number.getCpuNumber());
System.out.println(“您的号码是:”+number.getPlayerNumber());
}
公共静态无效条件(){
if(cpuNumber!=playerNumber()){
if(playerNumber()
}
从良好编程实践的角度来看,什么更有效?Q:为什么不这样做:
import java.util.Random;
...
public class NumberGuess {
public static void main(String[] args) {
NumberGuess numberGuess = new NumberGuess ();
int playerNumber = numberGuess.playerNumber();
numberGuess.printResults();
...
public int playerNumber () {
...
public static int generateNumber() {
...
我想这两个看起来都不好,伊姆霍。另外,Number对于您自己的类来说是个坏名字,因为已经有一个名为java.lang.Number的类。Christian说得对,实际上不需要所有这些静态方法。是的,它从主方法中去掉了逻辑,所以看起来不那么“混乱”,但它并不能解决您的问题,而且通常会产生意大利面代码。此外,以这种方式将逻辑分离为单独的方法也会导致编写笨拙的代码,允许这些方法在彼此之间传递信息(这就是创建这些静态变量的原因) 创建一个只封装一个数字并提供getter和setter的完整类几乎没有任何意义,如果您真的愿意,您可以使用一个简单的整数来实现这一点。但我想说,OOP的目的是将相关组件组织到一个容器中,该容器足够通用,可以重用,但不够具体,不能用于其他环境(即GUI、控制台、网络) 如果我在写它,我可能会这样做:
import java.util.*;
class GuessingGame {
private static final Random rng = new Random();
private int number;
public void generateNumber() {
number = rng.nextInt(10);
}
public int guess(int guess) {
return Integer.compare(guess, number);
}
public int getNumber() {
return number;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
GuessingGame game = new GuessingGame();
game.generateNumber();
System.out.println("Guess a number:");
int n = sc.nextInt();
int result = game.guess(n);
if (result < 0)
System.out.println("You guessed too low!");
else if (result > 0)
System.out.println("You guessed too high!");
else
System.out.println("You win!");
System.out.println("You guessed: " + n);
System.out.println("The actual number was: " + game.getNumber());
}
}
import java.util.*;
班级猜谜游戏{
私有静态最终随机rng=新随机();
私有整数;
公共空生成器枚举器(){
编号=rng.nextInt(10);
}
公共整数猜测(整数猜测){
返回整数。比较(猜测、数字);
}
public int getNumber(){
返回号码;
}
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
猜游戏=新猜游戏();
game.generateNumber();
System.out.println(“猜一个数字:”);
int n=sc.nextInt();
int结果=游戏。猜测(n);
如果(结果<0)
System.out.println(“你也猜到了
import java.util.*;
class GuessingGame {
private static final Random rng = new Random();
private int number;
public void generateNumber() {
number = rng.nextInt(10);
}
public int guess(int guess) {
return Integer.compare(guess, number);
}
public int getNumber() {
return number;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
GuessingGame game = new GuessingGame();
game.generateNumber();
System.out.println("Guess a number:");
int n = sc.nextInt();
int result = game.guess(n);
if (result < 0)
System.out.println("You guessed too low!");
else if (result > 0)
System.out.println("You guessed too high!");
else
System.out.println("You win!");
System.out.println("You guessed: " + n);
System.out.println("The actual number was: " + game.getNumber());
}
}