gpt4 book ai didi

java - 变量(可能)超出范围

转载 作者:行者123 更新时间:2023-12-01 11:04:31 25 4
gpt4 key购买 nike

好的,所以有两个类 Player 和子类 Classes。我使用子类通过 switch 语句在主类中设置玩家统计信息,让用户选择他的类。但由于某种原因,在主类中执行时设置的变量超出了范围。看在我的份上,我不明白为什么会发生这种事

这是Player 类:

public class Player {
private int HP;
private int ATK;
private int DEF;
private int DAMAGE;

void setHP(int a){
HP=a;
}

void setATK(int a){
ATK=a;
}

void setDEF(int a){
DEF=a;
}

void setDAMAGE(){
DAMAGE = damageCalculation();
}

int damageCalculation(){
int damage = (2*ATK);
return damage;
}

Player(String Class){
Classes classes = new Classes();
switch(Class){
case "Barbarian":
classes.Barbar();
System.out.println("Done");
break;
case "Rogue":
break;
default: System.out.println("Error");
}
}

void getStats(){
System.out.format("Player stats:"
+ "\nHP: %d"
+ "\nATK: %d"
+ "\nDEF: %d"
+ "\nDAMAGE: %d\n",HP,ATK,DEF,DAMAGE);
}
}

这是Classes类(请注意,在子类中获取统计数据返回有效值):

public class Classes extends Player {

public void Barbar(){
Player player = new Player();
player.setHP(60);
player.setATK(15);
player.setDEF(25);
player.setDAMAGE();
player.getStats();
}
}

这是main类:

import java.util.Scanner;
public class SurvivalGame {

public static void main(String[] args) {
Scanner scan = new Scanner(System.in,"Windows-1250");
System.out.println("Enter your class");
Player player = new Player(scan.nextLine());
player.getStats(); //here getStats return zeros,
//possibly out of scope variables if player enters Barbarian
}
}

最佳答案

public void Barbar(){
Player player = new Player();

如果仔细观察,您会创建一个新的 Player 并向其添加值,而不是 main 方法中的 Player。

关于java - 变量(可能)超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33081994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com