gpt4 book ai didi

java - 将值从 A 类返回到 B 类,然后返回到 Main 类?

转载 作者:行者123 更新时间:2023-11-30 02:51:24 25 4
gpt4 key购买 nike

我正在编写一个简单的角色创建程序来学习类和 Java 编程。

该代码正在开发中,无法运行,因为我不知道如何使其工作。

我的问题是我不知道如何正确地将详细信息/信息/值从另一个类返回到另一个类,然后返回到主类。

我想要解决的是如何获取存储在 weapon.javacharacteristic.java 中的信息,以便我可以在 player 中使用它们.java。假设用户输入 1 代表战士。然后我需要从它们自己的类中获取武器和特性的信息,并将此信息返回给Player.java中的SetClass方法。

简而言之:
如果用户输入= 1 => classType是Warrior => WeaponType是Sword无论如何

这是迄今为止我的代码:

主程序:

import java.util.*;

public class characterCreationProgam {

private static Scanner input = new Scanner(System.in);

public static void main1(String[] args) {

try {
System.out.println("Welcome to the super simple character creator ");
System.out.println("Choose class: 1: Warrior 2: Wizard 3: Rogue 4: Healer ");
int class = input.nextInt();

// creating new OOP
Player newCharacter = new Player(class);

newCharacter.setClass(class);

System.out.println("New character has been made: ");
newCharacter.printPlayer();

System.out.println("Print character stats? 1: Yes 2: No ");
int answer = input.nextInt();
if (answer == 1) {
newCharacter.printClass();
} else if (answer == 2) {
return;
}

System.out.println("Print weapon stats? 1: Yes 2: No ");
int answer2 = input.nextInt();
if (answer2 == 1) {
newCharacter.printWeapon();
} else if (answer2 == 2) {
return;
}

System.out.println("Shutting down the program.");
System.exit(1);
} catch (Exception e) {
System.out.println("Error! Program closing.");
System.exit(1);
}
}
}

Player.Java 类

public class Player {

private int class;
private String sex;
private int age;
private int weapon;

public Player(int class) {
this.class = class;
this.sex = "";
this.age = 0;
this.weapon = 0;
}

// Method for setting the class
public void setClass(int class) {

if (class == 1) { // Warrior
// something here to return proper character class and weapon
// from their own class files
this.sex = "Male";
this.age = 45;

} else if (class == 2) { // Wizard
// something here to return proper character class and weapon
// from their own class files
this.sex = "Female";
this.age = 30;

} else if (class == 3) { // Rogue
// something here to return proper character class and weapon
// from their own class files
this.sex = "Female";
this.age = 25;

} else if (class == 4) { // healer
// something here to return proper character class and weapon
// from their own class files
this.sukupuoli = "Male";
this.age = 21;

} else {
System.out.println("Unkown class selection. ");
}
}

// Method to return/print character info
public void printPlayer() {
System.out.println("class: " + this.class + "\nGender: "
+ this.sex + "\nAge: " + this.age + "\nWeapon: "
+ this.weapon);
}

// Method to return/print class info
public void printClass() {
// Something here to return classInfo from CharacterClass.Java
}

// Method to return/print weapon info
public void printWeapon() {
// Something here to return weaponInfo from Weapon.Java
}
}

Characterstics.Java 类

public class Class {

private String className;
private int classLevel;
private String specialSkills;

public Class(String name, int level, String skills) {
this.className = name;
this.classLevel = level;
this.specialSkills = skills;
}

public void classType() {

if () { // Don't know what to put in here
this.className = "Warrior";
this.classLevel = 90;
this.specialSkills = "Damage reduction";
// Something to set correct weapon to this classType from
// weapon.java

} else if () { // Don't know what to put in here
this.className = "Wizard";
this.classLevel = 75;
this.specialSkills = "Magic ";
// Something to set correct weapon to this classType from
// weapon.java

} else if () { // Don't know what to put in here
this.className = "Rogue";
this.classLevel = 55;
this.specialSkills = "Dodge";
// Something to set correct weapon to this classType from
// weapon.java

} else if () { // Don't know what to put in here
this.className = "Healer";
this.classLevel = 69;
this.specialSkills = "Healing";
// Something to set correct weapon to this classType from
// weapon.java
}
}

// Method to return characters details.
public void characterInfo() {
System.out.println("\nClass: " + this.className + "\nLevel: "
+ this.classLevel + "\nSkills: " + this.specialSkills);
}
}

最后...
Weapon.Java 类

public class Weapon {

// Luokan
private int damage;
private String type;
private String bonus;

public Weapon() {
this.damage = 0;
this.type = "";
this.bonus = "";
}

public void weaponType() {

if () { // Don't know what to put in here, class is warrior
this.type = "Sword";
this.damage = 75;
this.bonus = "Armor penetration";

} else if () { // Don't know what to put in here, class is wizard
this.type = "Staff";
this.damage = 35;
this.bonus = "Spell casting";

} else if () { // Don't know what to put in here, class is rogue
this.type = "Daggers";
this.damage = 55;
this.bonus = "Poisoning enemies";

} else if () { // Don't know what to put in here, class is healer
this.type = "Hammer";
this.damage = 85;
this.bonus = "Stunning enemies";
}
}

// Method to print weapon details.
public void weaponInfo() {
System.out.println("Weapon type: " + this.type + "\nDamage: "
+ this.damage + "\nBonus: " + this.bonus);
}
}

最佳答案

您始终可以通过编写 Getters 从其他类获取属性.

此外,正如 Pedro David 已经说过的,你不能使用“class”来命名类和变量,因为它是 Reserved Word .

话虽这么说,这是我针对您的问题的解决方案(它远非完美,但希望您会看到如何轻松地在类之间共享信息)

import java.util.*;

public class CharacterCreationProgam {

private static Scanner input = new Scanner(System.in);

public static void main(String[] args) {

try {

System.out.println("Welcome to the super simple character creator ");
System.out.println("Choose class: 1: Warrior 2: Wizard 3: Rogue 4: Healer ");
int race = input.nextInt();

//creating new Player-Object:
Player player = new Player(race);

System.out.println("New character has been made: ");

//Character stats:
System.out.println("Print character stats? 1: Yes 2: No ");
int answer = input.nextInt();
if (answer == 1) {
System.out.println("Race: " + player.getRace().getraceName() +
"\nGender: " + player.getSex() +
"\nAge: " + player.getAge());
}

//Weapon stats:
System.out.println("Print weapon stats? 1: Yes 2: No ");
answer = input.nextInt();
if (answer == 1) {
Weapon playerWeapon = player.getWeapon();
System.out.println("Weapon Type: " + playerWeapon.getType() +
"\nDamage: " + playerWeapon.getDamage() +
"\nBonus: " + playerWeapon.getBonus());
}

} catch (Exception e) {
System.err.println("Error: " + e);
}finally{
input.close();
}


}

}

这是我对 Player.java 的尝试:

public class Player {

private Race playerRace;
private String sex;
private int age;
private Weapon weapon;


public Player(int race) throws Exception{
setRace(race);
setAtributes();
setWeapon();
}

private void setRace(int race) throws Exception{
this.playerRace = new Race(race);

}

private void setAtributes() throws Exception{

switch (playerRace.getraceName()) {
case "Warrior":
this.sex = "Male";
this.age = 45;
break;

case "Wizard":
this.sex = "Female";
this.age = 30;
break;

case "Rogue":
this.sex = "Female";
this.age = 25;
break;

case "Healer":
this.sex = "Male";
this.age = 21;
break;

default:
throw new Exception();
}
}

private void setWeapon() throws Exception{
weapon = new Weapon(playerRace);
}

public String getSex(){
return sex;
}

public int getAge(){
return age;
}

public Weapon getWeapon(){
return weapon;
}

public Race getRace(){
return playerRace;
}

}

我的 Race.java:

public class Race {

private String raceName; //Enum would be BP
private int raceLevel;
private String specialSkill; //Another Class for the skills would be Nice in the long run

public Race(int race) throws Exception{
setRace(race);
}


private void setRace(int race) throws Exception{

switch (race) {
case 1: //Warrior
this.raceName = "Warrior";
this.raceLevel = 90;
this.specialSkill = "Damage reduction";
break;

case 2: //Wizard
this.raceName = "Wizard";
this.raceLevel = 75;
this.specialSkill = "Magic";
break;

case 3: //Rogue
this.raceName = "Rogue";
this.raceLevel = 55;
this.specialSkill= "Dodge";
break;

case 4: //Healer
this.raceName = "Healer";
this.raceLevel = 69;
this.specialSkill= "Healing";
break;

default:
throw new Exception(); //you should find a fitting Exception for this
}
}

public String getraceName(){
return this.raceName;
}

public int getraceLevel(){
return this.raceLevel;
}

public String specialSkill(){
return this.specialSkill;
}

}

还有 Weapon.java:

public class Weapon {

private int damage;
private String type;
private String bonus;

public Weapon(Race race) throws Exception{
setWeapon(race);
}

private void setWeapon(Race race) throws Exception{
switch (race.getraceName()) {
case "Warrior":
this.type = "Sword";
this.damage = 75;
this.bonus = "Armor penetration";
break;

case "Wizard":
this.type = "Staff";
this.damage = 35;
this.bonus = "Spell casting";
break;

case "Rogue":
this.type = "Daggers";
this.damage = 55;
this.bonus = "Poisoning enemies";
break;

case "Healer":
this.type = "Hammer";
this.damage = 85;
this.bonus = "Stunning enemies";
break;

default:
throw new Exception();
}
}


public int getDamage(){
return damage;
}

public String getType(){
return type;
}

public String getBonus(){
return bonus;
}

}

正如您所看到的,我将 Switch 语句与对象的 getter 一起使用。我希望这对您有所帮助,如果您有任何疑问,请询问;)

关于java - 将值从 A 类返回到 B 类,然后返回到 Main 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38542957/

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