java - Java:使用静态方法在 Main 之外的方法中调用对象
问题描述
应该是一个简单的修复,但我想知道如何使用在 main.js 中创建的对象。我试着说人类 h;在 main (或任何其他方法)之外,所以我可以在其他方法中调用它,但是因为我使用的是静态方法,所以我不能使用 h. 现在使用此代码,java 告诉我找不到 h(在人工滚动方法中。)
import java.util.Scanner;
class Main
{
// static Human h;
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
Computer c = new Computer();
Human h = new Human();
System.out.println("Let's play PIG");
System.out.println("What is your name");
String name = scan.nextLine();
System.out.println("Hello" + " " + name + " " + "you can go first");
startGame(h, name);
}
public static void startGame(Human h, String name)
{
Scanner scan = new Scanner(System.in);
System.out.println("Press r to start your roll");
String rresponse = scan.nextLine();
if(!rresponse.equalsIgnoreCase("R"))
{
System.out.println("Try again");
startGame(h, name);
}
if(rresponse.equalsIgnoreCase("R"))
{
System.out.println("You pressed r, lets roll");
humanRoll(h, name);
}
}
public static void humanRoll(Human h, String name)
{
if(h.getRollNumh()==1)
{
System.out.println(name + " " + "you got a " + h.getRollNumh());
System.out.println("You got a score of" + h.getHumanTurnScore() + "this turn");
System.out.println("Here is your current overall score" + h.getHumanOverallScore());
System.out.println("Your rolled a one, now its the Computers' turn");
switchHuman();
}
}
}
如果您需要查看 Human 类以提供上下文,我可以快速响应并添加它,但它只是实例变量、默认构造函数、重载构造函数、访问器方法和 mutator 方法。
解决方案
您可以将 Human 作为方法参数传递给 startGame 和 humanRoll 将它们定义为
public static void startGame(Human human)
public static void humanRoll(Human human)
然后,在 main 中调用startGame(h)
.
看看这是否有效......
import java.util.Scanner;
class Main {
//tried to put Human h; up here but didn't work due to static methods
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Computer c = new Computer();
Human h = new Human();
System.out.println("Let's play PIG");
System.out.println("What is your name");
String name = scan.nextLine();
System.out.println("Hello" + " " + name + " " + "you can go first");
startGame(h);
}
public static void startGame(Human h) {
Scanner scan = new Scanner(System.in);
System.out.println("Press r to start your roll");
String rresponse = scan.nextLine();
if (!rresponse.equalsIgnoreCase("R"))
{
System.out.println("Try again");
startGame(h);
}
if (rresponse.equalsIgnoreCase("R"))
{
System.out.println("You pressed r, lets roll");
humanRoll(h);
}
}
public static void humanRoll(Human h)
{
//RollNumh is just the dice number that the player rolled
if (h.getRollNumh() == 1)
{
System.out.println(name + " " + "you got a " + h.getRollNumh);
System.out.println("You got a score of" + h.getHumanTurnScore() + "this turn");
System.out.println("Here is your current overall score" + h.getOverallHumanOverallScore());
System.out.println("Your rolled a one, now its the Computers' turn");
switchHuman();
}
}
}
推荐阅读
- python - 在 Python 中计算数组的元素
- python - 如何从列表中删除 '\x00'
- javascript - EJS For 循环和 If 语句未显示正确的值
- reactjs - 反应打字稿 - 解析错误:意外的令牌 - 升级到 17.0.1 后
- flutter - Flutter:在应用程序崩溃之前捕获 ClientException(在收到完整标头之前关闭连接)
- python - 如何使用 Selenium 更改搜索参数?
- python-3.x - 如果列表中的项目存在于列表列表中,python打印项目和相应的列表
- google-sheets - 如何简化这个 IF(SUM() 公式?
- r - 如何在数据框中创建一个新列,新列的每一行都是之前所有行的乘积
- c - C - 调用 memset 后出现奇怪的 sysmalloc 断言错误