Java 初始化的对象数组仍然获取空指针异常?

Java 初始化的对象数组仍然获取空指针异常?,java,arrays,nullpointerexception,syntax-error,poker,Java,Arrays,Nullpointerexception,Syntax Error,Poker,我对编程完全陌生,正在尝试用Java创建一个扑克程序 这段代码在Player类中,我试图构造一个空手。无论我如何填充数组(像这样使用循环等),当我试图调用hand[1]或hand[I]或其他方法时,Eclipse都会告诉我有一个空指针。 通常,没有任何编译时错误。但当我单独构造手中的每张卡片时——见下文——编译器会感到不安 下面是玩家和职业的相关片段 我做错了什么?我找了不少,还是不明白。 提前谢谢你 class Player { // Sets up a blank card array c

我对编程完全陌生,正在尝试用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;
    }
职业玩家{
//设置名为“手”的空白卡片阵列
//有五(0,0)个插槽用于实际卡。
私人卡[]手=新卡[5];
私人卡手[0]=新卡(0,0);//错误:令牌“0”语法错误,删除此令牌
私人卡手[1]=新卡(0,0);//错误:令牌“1”上的语法错误,删除此令牌
私人卡手[2]=新卡(0,0);//错误:令牌“2”上的语法错误,删除此令牌
私人卡手[3]=新卡(0,0);//错误:令牌“3”上的语法错误,删除此令牌
私人卡手[4]=新卡(0,0);//错误:令牌“4”语法错误,删除此令牌
班级卡{
//将默认西装/号码设置为零。
//幸运的是,这样的0-0卡并不存在。
私有整数=0;
私人诉讼=0;
//通过给它一个数字和一套衣服来构造卡片本身。
//号码/套装*只能*在此处设置。
公共卡(整数n,整数s){
//套装/数字值绑定测试仪。
//数字必须介于1和14之间(包括1和14)(Ace低和Ace高)。
//西装必须介于1和4之间(包括H/C/D/S)。

如果(n>0&&n0&&s错误的原因是

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

看起来像是对Java的声明,您只能声明一个简单的标识符。

错误的原因是

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

看起来像Java的声明,您只能声明一个简单的标识符。

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

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),
};

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

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),
};

填充
hand
数组的语句放错了位置。请在构造函数中执行此操作。填充
hand
数组的语句放错了位置。请在构造函数中执行此操作。谢谢,这涵盖了感兴趣的人的初始化块。谢谢,这涵盖了感兴趣的人的初始化块。