2014-04-18 2 views
-1

내가 함께 간단한 cardgame를 넣어 노력하고있어 나는 NullPointerException이 우연히이 프로그램은 내가 그것을 실행하는 방법 setSuit를 실행하는 경우, 나는이 오류 메시지가 얻을 수 있지만 컴파일 :BlueJ의 널 포인터 예외

java.lang.NullPointerException 
    at Cards.setCard(Cards.java:18) 
    at Cards.<init>(Cards.java:11) 

나는 아래의 코드를 게시 강조 표시된 영역을 표시 한이

public class Cards { 
    private String HEARTS = "Hearts"; 
    private String CLUBS = "Clubs"; 
    private String DIAMONDS = "Diamonds"; 
    private String SPADES = "Spades"; 
    private int number; 
    private String suit; 
    public Cards(String newCard, int newNumber1) { 
     setCard(newCard); 
     setNumber(newNumber1); 
    } 

    public void setCard(String newSuit) { 
     if((suit != null) && // this part get's highlighted 
      (suit.equalsIgnoreCase(HEARTS)) || 
      (suit.equalsIgnoreCase(DIAMONDS)) || 
      (suit.equalsIgnoreCase(CLUBS)) || 
      (suit.equalsIgnoreCase(SPADES))) { 
      suit = newSuit; 
     } else { 
      suit = "Unknown Suit"; 
      System.out.print("Invalid"); 
     } 

    } 
    public int getNumber() { 
     return number; 
    } 

    public String getSuit() { 
     return suit; 
    } 

    public void setNumber(int newNumber) { 
     number = newNumber; 
     if(newNumber >0 && newNumber <=10) { 
       number = newNumber; 
     } 
    } 
} 
+0

이전에 해본 적이 없습니까? – user3538544

+0

스택 트레이스 :'(Cards.java:18)'에주의하고,'Cards.java'는 예외가있는 파일이고'18'은 발생하는 라인 번호입니다. – Rogue

+0

글쎄, 당신은 구글, "bluej 디버깅 튜토리얼", 거기, 많은, 많은 링크. – OldProgrammer

답변

0

확인,하지만 난 setCard가 있어야한다고 생각 :

public void setCard(String newSuit) 
    { 
    if((newSuit != null) && //this part get's highlighted 
    (newSuit.equalsIgnoreCase(HEARTS)) || 
    (newSuit.equalsIgnoreCase(DIAMONDS)) || 
    (newSuit.equalsIgnoreCase(CLUBS)) || 
    (newSuit.equalsIgnoreCase(SPADES))) 
    { 
     suit = newSuit; 
    } 
    else 
    { 
     suit = "Unknown Suit"; 
     System.out.print("Invalid"); 
    } 
} 
+0

다른 사람이 개선 된 코딩 스타일을 개선해야한다고 제안했지만 내 목표는 코드 스타일을 변경하는 것이 아니라 스타일을 변경하는 것이 었습니다. – jedison

+0

코드가 여전히 작동하지 않을 것으로 생각됩니다. 그렇다면 내 제안 된 변경 사항을'setCard() '로 확인해주세요. – jedison

+0

내 코드가 작동합니다!! = null 매개 변수를 없애고 실제로는 소송을 신고하는 것을 잊어 버렸지 만, said – user3538544

2

운영 명령 문제입니다. 대신 다음을 시도해보십시오.

if ((suit != null) && (suit.equalsIgnoreCase(HEARTS) || suit.equalsIgnoreCase(DIAMONDS) || suit.equalsIgnoreCase(CLUBS) || suit.equalsIgnoreCase(SPADES)))