我目前正在尝试制作一张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;
}
}
答案 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);
}