在java类中设置一个值。空指针异常

时间:2015-03-25 16:50:52

标签: java

我目前正在尝试制作一张Java纸牌游戏,但我在设置该卡时遇到了问题。我在主函数中接受2H 3D 4S 5C 6H等值。我试图将这些值放入我的Card类,但是当我尝试设置我的排名时,我得到一个nullpointerexception错误。

我是java编程的新手,无法弄清楚为什么会这样。有什么建议?我不允许制作一系列卡片吗?

public class Game {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int T = sc.nextInt();

    String[] player1arr = new String[5];
    String[] player2arr = new String[5];

    Card[] player1 = new Card[5];
    Card[] player2 = new Card[5];

    for(int i = 0; i < 5; i++){
        player1arr[i] = sc.next();
        char first = player1arr[i].charAt(0);
        int rank = Character.getNumericValue(first); //error
        player1[i].setRank(rank); 


    }

    for(int i = 0; i < 5; i++){
        player2arr[i] = sc.next();
        System.out.println(player2arr[i]);
    }  
  }
}

class Card{
    private int rank;
    private char suit;

    public int getRank(){
        return rank;
    }

    public void setRank(int r){
        rank = r;
    }
}

2 个答案:

答案 0 :(得分:2)

创建对象数组时,最初使用默认值null填充数组。 呼叫

cards[i] = new Card();

初始化数组中的所有对象:)

答案 1 :(得分:2)

您需要在主方法中实例化卡片。

for(int i = 0; i < 5; i++){
    player1arr[i] = sc.next();
    char first = player1arr[i].charAt(0);
    int rank = Character.getNumericValue(first); //error
    player1[i] = new Card();
    player1[i].setRank(rank); 


}