所以这是我的第一个迷你javaproject,我已经被困在我的代码中的基本结构和(不存在的)关系之间。我在下面的评论中链接了代码,由于某些原因无法将其粘贴到此处 - (主要是空的,所以没有复制它。)
所以我花了一些时间来了解Java的基础知识(作为我的第一次编程冒险),说实话,我感到非常自信。 (在Codewars上,我完成了100 + Katas,但当然这些都是“单级”,所以我没有为“现实世界”做好准备。)
很难确切地指出我的问题,但我会尝试举一些例子。
1,(Main现在是空的,但无论如何)主要是“什么都不能用”。像对象的方法,如room1或player1等。
2,在我的Room.java第21-22行,为什么对象room1不可见?为什么Intellij会说“Unknown class:RoomArray,如果我之前创造了那个东西?
。”3,我知道我应该将我的变量设置为私有,我打算稍后再做。另外,我应该使用setter和getter方法,我尝试使用基本上所有方法。但是例如在Player.java中我有这个
Player player1 = new Player(300, 50, "Conan", 75, false);
public Player getPlayer1() {
return player1;
}
如果我尝试在任何其他类中使用getPlayer1()方法,它只是无法查看/访问它?
3,为了让我更加困惑,Room1类可以访问在Dungeon类中创建的getMyDungeon()方法。为什么会这样?
(也许它与继承有关?Room1扩展Room扩展Room的事实?但如果是这样的话,它似乎很奇怪,因为并非所有类都可以与某些东西建立HAS-A或IS-A关系。例如 - 如果我稍后在单独的课程中创建所有10个房间作为Room1,Room2等,我怎么能创建一个包含它们的Room []数组?无论我在哪里开始这样做,它总会给我错误“无法解决smybol“对于所有房间对象......”
过去几天我一直在阅读这个主题并理解这一切,但是当我尝试构建这个项目时,它仍然崩溃了。我意识到一个经验丰富的程序员可能甚至不是我的问题,因为它是多么基本,但如果有人能帮助我把这一切都清楚地记在脑后,我会很感激。 (真的不是在寻找完整的代码,而是我应该去的一些方向,或者缺少一步,等等。)
答案 0 :(得分:1)
It seems you to be trying to create an object within the class of that object The correct use is:
public static void main(String[] args){
Player player1 = new Player(300, 50, "Conan", 75, false);
}
or if you want your Room class to have a lot of players
public class Room {
//this object will be create when you do Room room = new Room();
List<Player> players = new ArrayList<>();
public void createPlayer(){
players.add(new Player());
}
//this is a getter
public List<Player> getPlayers() {
return players;
}
}
your Player:
public class Player {
//Fields and Methods
}
and your main:
public static void main(String[] args)
{
Room room =new Room();
room.createPlayer();
for (Player p:room.getPlayers()) {
//p.doSomething
}
}
if you want an object to be created without the need to create an instance from the outside you need to use the static keyword (don't do that unless you know what you are doing)
static Player player1 = new Player(300, 50, "Conan", 75, false);
public static Player getPlayer1() {
return player1;
}