将值从A类返回到B类再返回Main类?

时间:2016-07-23 14:40:04

标签: java class oop

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

代码正在进行中并且不可运行,因为我不知道如何使其工作。

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

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

总之如下:
如果用户输入= 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 class

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);
    }
}

1 个答案:

答案 0 :(得分:2)

您始终可以通过编写Getters来获取其他类的Atributes。

另外,正如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;
    }

}

My 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一起使用。我希望这有点帮助,如果您有任何疑问,请询问;)