gpt4 book ai didi

java - 从 ArrayList 获取字符串返回 null

转载 作者:行者123 更新时间:2023-12-01 13:59:24 26 4
gpt4 key购买 nike

我有一个包含两个值的 Tiles ArrayList;一个 int 和一个 String。

我需要获取这两个值,因此在编写代码时我决定确保它正常工作:

private void setIcons()
{
ArrayList<Tiles> tiles = new ArrayList<>();
tiles = game.getTiles(0);
Tiles i = tiles.get(0);
String s = i.returnTileName();
System.out.println(i.returnTileName() +" ," +i.returnTileNumber());
}

这是我的 Tiles 类,它有子类:

public class Tiles
{
int number;
String name;

public Tiles()
{

}

public String returnTileName()
{
return name;
}

public int returnTileNumber()
{
return number;
}
}

“Tiles”有几个子类,所有子类的结构几乎相同:

public class Bamboo extends Tiles
{
int number;
String name;
public Bamboo(int number, String name)
{
this.number = number;
this.name = name;
}
}

当我运行它时,字符串返回为“null”,而我的 int 返回为“0”,当它们明显具有值时,如下图所示。

http://img716.imageshack.us/img716/6154/emx4.jpg

我在 setIcons() 中调用的方法:

 public ArrayList getTiles(int playerX)
{
ArrayList<Tiles> tiles = new ArrayList<>();
Player pl = player.get(playerX);
tiles = pl.playerTiles;
return tiles;
}

“Game”类中有两个 ArrayList,“tilesDeck”(Tiles 的 ArrayList)和“player”(Player 类的 ArrayList)。

这是我的游戏课。之前不知道它有滚动功能。

public class Game
{
ArrayList<Tiles> tilesDeck = new ArrayList<>();
ArrayList<Player> player = new ArrayList<>();

public Game()
{
addTile("Bamboo", 1);
addTile("Bamboo", 2);
addTile("Bamboo", 3);
addTile("Bamboo", 4);
addTile("Bamboo", 5);
addTile("Bamboo", 6);
addTile("Bamboo", 7);
addTile("Bamboo", 8);
addTile("Bamboo", 9);

addTile("Circles", 1);
addTile("Circles", 2);
addTile("Circles", 3);
addTile("Circles", 4);
addTile("Circles", 5);
addTile("Circles", 6);
addTile("Circles", 7);
addTile("Circles", 8);
addTile("Circles", 9);

addTile("Characters", 1);
addTile("Characters", 2);
addTile("Characters", 3);
addTile("Characters", 4);
addTile("Characters", 5);
addTile("Characters", 6);
addTile("Characters", 7);
addTile("Characters", 8);
addTile("Characters", 9);

addTile("Dragons", 1);
addTile("Winds", 1);

Collections.shuffle(tilesDeck);
player.add(new Player("Player 1"));
player.add(new Player("Player 2"));
player.add(new Player("Player 3"));
player.add(new Player("Player 4"));

startTiles();
}

private void addTile(String name, int number)
{
int counter = 0;
if (name.contains("Bamboo"))
{
while (counter < 4)
{
tilesDeck.add(new Bamboo(number, name));
counter++;
}
}

if (name.contains("Circles"))
{
while (counter < 4)
{
tilesDeck.add(new Circles(number, name));
counter++;
}
}

if (name.contains("Characters"))
{
while (counter < 4)
{
tilesDeck.add(new Characters(number, name));
counter++;
}
}

if (name.contains("Winds"))
{
while (counter < 4)
{
tilesDeck.add(new Winds("East"));
tilesDeck.add(new Winds("South"));
tilesDeck.add(new Winds("West"));
tilesDeck.add(new Winds("North"));
counter++;
}
}

if (name.contains("Dragons"))
{
while (counter < 4)
{
tilesDeck.add(new Dragons("Red"));
tilesDeck.add(new Dragons("Green"));
tilesDeck.add(new Dragons("White"));
counter++;
}
}
}

private void startTiles()
{
int playerCounter = 0;

while (playerCounter < 4)
{
Player pl = player.get(playerCounter);
int counter = 0;
while (counter <13)
{
pl.playerTiles.add(tilesDeck.get(0));
tilesDeck.remove(0);
counter++;
}
playerCounter++;
}
}

public ArrayList getTiles(int playerX)
{
ArrayList<Tiles> tiles = new ArrayList<>();
Player pl = player.get(playerX);
tiles = pl.playerTiles;
return tiles;
}
}

最佳答案

问题是您的子类正在创建重复的数字和名称变量:

public class Bamboo extends Tiles
{
int number; // <-- remove this
String name; // <-- and this
public Bamboo(int number, String name)
{
this.number = number;
this.name = name;
}
}

Bamboo 类正在初始化重复的数字和名称变量,但 returnTileName()returnTileNumber() 方法正在从 Tiles 父类(super class)返回未初始化的变量。

关于java - 从 ArrayList 获取字符串返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19421458/

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