试图打印存储在另一个java对象中的变量

试图打印存储在另一个java对象中的变量,java,object,Java,Object,好吧,我对java还很陌生,我认为这比我所说的更基本。所以我有一个对象播放器,它存储了播放器的核心数据,但是我如何在代码的其他地方调用这些变量呢?至少让它打印玩家的力量分数?最佳做法是创建公开方法,公开对象的内部状态,这些状态应该在其他类中可见,并留下不应该被其他类使用的不可见信息 通常,这些方法称为getter,并使用以下语法: import java.util.Scanner; class player_test { public static void main(String[]

好吧,我对java还很陌生,我认为这比我所说的更基本。所以我有一个对象播放器,它存储了播放器的核心数据,但是我如何在代码的其他地方调用这些变量呢?至少让它打印玩家的力量分数?

最佳做法是创建公开方法,公开对象的内部状态,这些状态应该在其他类中可见,并留下不应该被其他类使用的不可见信息

通常,这些方法称为getter,并使用以下语法:

import java.util.Scanner;

class player_test {
   public static void main(String[] args) {

     Scanner s_in = new Scanner(System.in);
     Scanner i_in = new Scanner(System.in);

     class player {

        String player_name;
        String player_class;
        String player_race;
        int player_STR = 10;
        int player_DEX;
        int player_CON;
        int player_WIS;
        int player_INT;
        int player_CHA;

    }

    int tempDex = new player(player_STR);
    System.out.println(tempDex);

  }
}
然后在第二个类中,您可以非常简单地打印它:

public String getPlayer_name() {
    return player_name;
}

最好的做法是创建公开方法,公开对象的内部状态,这些状态应该可以从其他类中看到,而留下不应该被其他类使用的不可见信息

通常,这些方法称为getter,并使用以下语法:

import java.util.Scanner;

class player_test {
   public static void main(String[] args) {

     Scanner s_in = new Scanner(System.in);
     Scanner i_in = new Scanner(System.in);

     class player {

        String player_name;
        String player_class;
        String player_race;
        int player_STR = 10;
        int player_DEX;
        int player_CON;
        int player_WIS;
        int player_INT;
        int player_CHA;

    }

    int tempDex = new player(player_STR);
    System.out.println(tempDex);

  }
}
然后在第二个类中,您可以非常简单地打印它:

public String getPlayer_name() {
    return player_name;
}

由于类player中的所有变量都是非静态的,因此需要创建该类的对象以访问其非静态数据成员

// is a best practice to start class names with uppercase
Player x = new Player();

... // Do something

System.out.println(x.getPlayer_name());
这里您正在创建一个player类的对象。因此您应该保持player类型的tempDex(也可以是超级类)。 其次,您使用的是一个未在类中定义的参数化构造函数

int tempDex=new player(player_STR); //this will generate compilation error

由于类player中的所有变量都是非静态的,因此需要创建该类的对象以访问其非静态数据成员

// is a best practice to start class names with uppercase
Player x = new Player();

... // Do something

System.out.println(x.getPlayer_name());
这里您正在创建一个player类的对象。因此您应该保持player类型的tempDex(也可以是超级类)。 其次,您使用的是一个未在类中定义的参数化构造函数

int tempDex=new player(player_STR); //this will generate compilation error

您可以执行
System.out.println(tempDex.player_STR)
或使用IDE将
toString()
方法添加到
Player
顺便说一句,您不需要将
Player\uuu
添加到所有字段名。您应该尝试对类使用
PascalCase
,对变量/属性/函数名使用
camelCase
。当然,这是一种风格选择,但这往往是命名事物最常见的方式;您正在将一个player类分配给一个int类型,您可以执行
System.out.println(tempDex.player\u STR)
或使用IDE将
toString()
方法添加到
Player
顺便说一句,您不需要将
Player\uuu
添加到所有字段名。您应该尝试对类使用
PascalCase
,对变量/属性/函数名使用
camelCase
。当然,这是一种风格选择,但这往往是命名事物最常见的方式;您正在将玩家类分配给int类型