2016-09-20 2 views
0
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); 

    } 
} 

Хорошо, поэтому я довольно новичок в java, и я думаю, что это более основательно, чем я делаю. Итак, у меня есть объект-плеер, который хранит в нем основную статистику игрока, но как я могу вызвать эти переменные в других точках всего кода? По крайней мере, чтобы он напечатал оценку силы игроков?Пытается напечатать переменную, хранящуюся в другом объекте java

+0

Вы можете сделать 'System.out.println (tempDex. player_STR); или используйте вашу среду IDE для добавления 'toString()' метода к 'Player', вам не нужно добавлять' player_' ко всем именам полей. –

+0

Вы должны попытаться использовать 'PascalCase' для классов и' camelCase' для имен переменных/свойств/функций. Конечно, это стилистический выбор, но это, как правило, самый распространенный способ назвать вещи. –

+0

Остерегайтесь: int tempDex = новый игрок (player_STR); вы назначаете класс игрока для типа int –

ответ

1

, так как все переменные в классе игрока нестатические, поэтому вам нужно создать объект этого класса для доступа к его нестационарным элементам данных.

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

Здесь вы создаете объект плеера class.so вы должны держать tempDex от игрок типа (может быть супер класс тоже). Во-вторых, вы используете параметризованные конструктор, который не определен в class.So правильный способ сделать это, как это .....

player tempDex=new player(); // an Object of class player is created 
System.out.println(tempDex.player_STR); 
System.out.println(tempDex.player_Name); 
// and so on. 
2

Лучшей практикой является создание общедоступных методов, которые отображают внутреннее состояние вашего объекта, которое должно быть видимым из других классов, и оставлять неясную информацию, которая не должна использоваться другими классами.

Обычно эти методы называются добытчики и использовать следующий синтаксис:

public String getPlayer_name() { 
    return player_name; 
} 

Тогда во втором классе вы можете распечатать его очень просто:

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

... // Do something 

System.out.println(x.getPlayer_name()); 
Смежные вопросы