java - 初始化的对象数组仍然出现空指针异常?

标签 java arrays nullpointerexception syntax-error poker

我对编程完全陌生,正在尝试用 Java 创建一个扑克程序。

这段代码位于 Player 类中,我试图在其中构造一只空手。无论我如何填充数组(使用循环,像这样,等等),当我尝试调用 hand[1] 或 hand[ i ] 或其他方法时,Eclipse 都会告诉我有一个空指针。

通常,不会出现任何编译时错误。但是,当我单独构建手中的每张牌时(见下文),编译器会感到不安......

下面是玩家和职业的相关片段。

我做错了什么?我查了好久还是没明白。
预先感谢您!

class Player {

// Sets up a blank card array called "hand"
// with five (0,0) slots for real cards.
private Card[] hand = new Card[5];

private Card hand[0] = new Card(0, 0);  // error: syntax error on token "0", delete this token
private Card hand[1] = new Card(0, 0);  // error: syntax error on token "1", delete this token
private Card hand[2] = new Card(0, 0);  // error: syntax error on token "2", delete this token
private Card hand[3] = new Card(0, 0);  // error: syntax error on token "3", delete this token
private Card hand[4] = new Card(0, 0);  // error: syntax error on token "4", delete this token

class Card {
// Sets the default suit/number to zero.
// Lucky for me, such a 0-0 Card does not exist.
private int number = 0;
private int suit = 0;

// Constructs the Card itself by giving it a number and suit.
// Numbers/suits can *only* be set here.

public Card(int n, int s) {

    // Bound tester for suit/number values.
    // Number has to be between 1 and 14 inclusive (Ace low-Ace high).
    // Suit has to be between 1 and 4 inclusive (H/C/D/S).
    if (n > 0 && n <= 14 && s > 0 && s <= 4) {
        number = n;
        suit = s;
    }

最佳答案

您将变量声明与数组初始化混合在一起,导致语法错误的代码。您已经声明了要用作存储的数组,可以使用 block 来初始化它:

private Card[] hand = new Card[5];

{
    hand[0] = new Card(0, 0); 
    hand[1] = new Card(0, 0);
    hand[2] = new Card(0, 0);
    hand[3] = new Card(0, 0);
    hand[4] = new Card(0, 0);
}

您还可以在一行中声明并初始化数组:

private Card[] hand = new Card[] {
    new Card(0, 0),
    new Card(0, 0),
    new Card(0, 0),
    new Card(0, 0),
    new Card(0, 0),
};

关于java - 初始化的对象数组仍然出现空指针异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15801907/

相关文章:

c - 使用 3D 数组 - 无法进行输出

java从数组创建树

如果为 null,Java Spring 不会返回 DTO 对象?

JSF 表单中的简单实体持久化

java - 具有并发输入/输出流的Java流程

java - Eclipse,通过 setter 初始化对象的简短方法

java - @DataJpaTest 表在刷新 spring.jpa.hibernate.ddl-auto=create-drop 上找不到

java - 自 Spring Boot 2.0.2-RELEASE 以来,指标端点不可用

c - 没有编译错误,但给定输入时崩溃

javascript - 如何在javascript中将多个数组合并为单个数组