0

私は現在、コンピューター サイエンスの入門コースを受講している高校生です。クラスでは、カード表記のためにユーザー入力を受け取り、カードの完全な説明を返すプログラムの作成を割り当てられました。たとえば、ユーザーが「AS」と入力すると、ターミナル ウィンドウに「Ace of Spades」が表示されます。ただし、コードを実行すると、「Ace of Spades」や別のカード表記ではなく、「null of null」が表示されます。

パブリック クラス カード

{

private String rank; 

private String suit;

private String fullRank;

private String fullSuit;

public Card(String rankAndSuit)
{
    rank = rankAndSuit.substring(0,1);


    if (rank == "A")
    {    
       fullRank = "Ace";
    } 
    else
    if  (rank == "2")
    {
        fullRank = "2"; 
    }
    else
    if (rank == "3")
    {    
        fullRank = "3";
    } 
    else
    if  (rank == "4")
    { 
        fullRank = "4"; 
    }
    else
    if (rank == "5")
    {    
        fullRank = "5";
    } 
    else
    if  (rank == "6")
    { 
        fullRank = "6"; 
    }
    else
    if (rank == "7")
    {    
        fullRank = "7";
    } 
    else
    if  (rank == "8")
    {
        fullRank = "8"; 
    }
    else
    if (rank == "9")
    {    
        fullRank = "9";
    } 
    else
    if  (rank == "10")
    {
        fullRank = "10"; 
    }
    else
    if (rank == "J")
    {    
        fullRank = "Jack";
    } 
    else
    if  (rank == "Q")
    { 
        fullRank = "Queen"; 
    }
    else
    if (rank == "K")
    {    
        fullRank = "King";
    } 


    suit = rankAndSuit.substring(1,2);


    if (suit == "D")
    {    
       fullSuit = "Diamonds";
    } 
    else
    if  (suit == "H")
    {
        fullSuit = "Hearts"; 
    }
    else
    if (suit == "S")
    {    
        fullSuit = "Spades";
    } 
    else
    if  (suit == "C")
    {      fullSuit = "Clubs"; 
    }
}

public String getCardDescription()
{
    return fullRank + " of " + fullSuit;
}

}

私のテスタークラスは次のとおりです。

パブリック クラス CardTester

{

public static void main(String[] args)
{
    Card testCard = new Card("AS");
    String cardDescription = testCard.getCardDescription();

    System.out.print(cardDescription);
}

}

null になる原因は何ですか?

4

2 に答える 2

0

次を使用して文字列を比較しています==

rank == "5"

しないでください。使用する:

if("5".equals(rank)){

代わりは。順序 (if(rank.equals("5"))比較していた文字列が null になる場合に null ポインター例外が発生しないことを保証するのとは対照的に。

于 2013-10-23T00:51:17.283 に答える
0

あなたはJavaで文字列比較の重大な罪を犯しています。

この質問を参照してください: Java で文字列を比較するにはどうすればよいですか?

于 2013-10-23T00:52:32.513 に答える