2015-03-25 2 views
-1

В настоящее время я пытаюсь создать карточную игру в формате java, но у меня проблемы с настройкой карты. Я беру значения, такие как 2H 3D 4S 5C 6H в основной функции. Я пытаюсь поместить эти значения в свой класс карты, но когда я пытаюсь установить свой ранг, я получаю ошибку nullpointerexception.Установка значения в классах Java. Null Pointer Exception

Я новичок в программировании на 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

Просим сообщить об ошибке. Кроме того, вы не создаете экземпляры карт в своем массиве. Вы просто выделяете память для самого массива, но с объектами нулевой карты. – Laerte

ответ

1

Когда вы создаете массив объектов, массив изначально заполняется значением по умолчанию null. Вызова

cards[i] = new Card(); 

инициализировать все объекты в пределах массива :)

1

Вам нужно создать экземпляр карты в основном методе.

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


} 
+0

В этом была проблема. Большое спасибо – user081608