我正在从2个单独的类创建一个类的对象,并且两个对象都为同一个方法返回不同的值。我怀疑它可能是while循环的一个问题,但这里是类。主类工作,setup类是被转换为对象的类,而游戏循环类具有不返回正确值的对象。它返回在安装开始时定义的值,而不是修改后的版本。
import java.util.Scanner;
public class MainClass {
static Scanner input = new Scanner(System.in);
//String x = input.nextLine();
public static void main(String[] args)
{
setup setupGov = new setup();
gameLoop gameLoop = new gameLoop();
setupGov.statsSetup();
System.out.println("happyness: " + setupGov.getHappyness() + " money: £" + setupGov.getMoney() + " population: " + setupGov.getPopulation());
gameLoop.loop();
}
}
import java.util.Scanner;
public class setup {
static Scanner input = new Scanner(System.in);
String goverment;
int happyness;
double money;
int population = 1000000;
public setup()
{
}
public void statsSetup()
{
System.out.println("Choose a goverment: 1. democracy 2. monarchy 3. dictatorship");
goverment = input.nextLine();
if (goverment.equals("1"))
{
happyness = 75;
money = 250000.0;
}
else if (goverment.equals("2"))
{
happyness = 50;
money = 500000.0;
}
else if (goverment.equals("3"))
{
happyness = 25;
money = 750000.0;
}
else
{
System.out.println("ENTER A VALID VALUE");
}
}
public int getHappyness()
{
return happyness;
}
public double getMoney()
{
return money;
}
public int getPopulation()
{
return population;
}
}
import java.util.Scanner;
public class gameLoop
{
static Scanner input = new Scanner(System.in);
static int turn = 0;
int happyness;
double money;
int population;
public gameLoop()
{
}
setup setupGov = new setup();
public static void main(String[] args)
{
}
public void loop()
{
while (true)
{
System.out.println("Turn: "+turn);
input.nextLine();
turn++;
}
}
}
答案 0 :(得分:2)
您正在创建两个不同的类设置实例。一个是直接在main函数中创建的,另一个是在gameLoop对象中创建的。它们不共享它们的属性,因此方法可能返回不同的值。每次使用'new'运算符时,都会创建一个新的类实例,并使用它自己的属性(因为静态成员属于类而不是实例,所以只共享静态成员)。如果你想拥有相同的实例,你可以写:
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
cookie = org.apache.shiro.web.servlet.SimpleCookie
cookie.name = shiro.session.id
sessionManager.sessionIdCookie = $cookie
主要是:
public class gameLoop
{
static Scanner input = new Scanner(System.in);
static int turn = 0;
int happyness;
double money;
int population;
public gameLoop(setup setupGov)
{
this.setupGov = setupGov;
}
setup setupGov;
public static void main(String[] args)
{
}
public void loop()
{
while (true)
{
System.out.println("Turn: "+turn);
input.nextLine();
turn++;
}
}
}
现在两个对象setupGov都是同一个实例。
请注意: 优良作法是用大写的第一个字母写出类名,例如。 GameLoop而不是gameLoop
答案 1 :(得分:0)
我真的不明白你正在尝试做什么或问题是什么,但在你的主要课程中,你有一个与该课程名称相同的对象。
gameLoop gameLoop = new gameLoop();
我不知道这是否是您问题的确切原因,但我几乎可以肯定那不应该是那样的。