2013-09-21 23 views
0

我正在嘗試創建一個程序來創建52張卡片。當我嘗試編譯代碼時,它總是說「在createDeck方法中找不到所有getName getter的符號。我是Java編程的新手,所以我不知道該怎麼做。 。有用下面的代碼:在另一種方法中使用getters將不起作用?

public class Card { 


private int value; 
private String name; 
private String suit; 

public void setValue(int v){ 
    value = v; 
} 
public int getValue(){ 
    return value; 
} 

public void setName(String n){ 
    name = n; 
} 
public String getName(){ 
    return name; 
} 

public void setSuit(String s){ 
    suit = s; 
} 
public String getSuit(){ 
    return suit; 
} 

} 

該類應該創建一個平臺:

public class cardDeck { 
int[] values = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; 
String[] names = {"Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "King", "Queen", "Jack", "Ace",}; 
String[] suits = {"Clubs", "Spades", "Hearts", "Diamonds"}; 

public Card[] createDeck (Card[] d){ 
for(int j:deck){ 
    d[j] = new Card(); 
    for(String k:names){ 
    d[j].setName(k); 
} 
    for(int i:values){ 
    if((d[j].getName == ("King")) || (d[j].getName == ("Queen")) || (d[j].getName == ("Jack"))){ 
     d[j].setValue(10); 
    }else if(d[j].getName == ("Ace")){ 
     d[j].setValue(11); 
    }else{ 
    d[j].setValue(i); 
    } 
    } 
    for(String l:suits){ 
    d[j].setSuit(l); 
    } 
} 
return d; 
} 
} 

下面是測試類:

方法調用
class CardTest { 
public static void main(String[] args){ 
    Card[] deck = new Card[52]; 
    cardDeck playingCards = new cardDeck(); 
    playingCards.createDeck(deck); 

    for(int q = 0; q < 52; q++){ 
    System.out.println(deck[q]); 
    } 
} 
} 
+0

不要使用'=='比較'String'(或者通常的任何一種'Object')。既然它是一個Object,你應該使用'String'中的'equals'方法。 – Julien

回答

2

你缺少括號:

if((d[j].getName() == ("King")) ... 

某些語言(如ActionScript)支持添加看起來像屬性而不是方法的getter。在Java中,getter和setter沒有這樣的特殊語法,它們只是普通的方法,即使沒有參數,也必須使用標準方法調用語法— () —來訪問所有方法。

+0

我做了更改並編譯。我還將測試類輸出更改爲: System.out.println(「A」+ deck [q] .getName()+「of」+ deck [q] .getSuit()) 但是,它僅打印出「鑽石王牌「。喲,你有什麼想法,爲什麼它只是一個鑽石王牌?在更改輸出之前,它會打印「Card @ 132j​​g1 Card @ 424324 ...」等等。如果所有的卡都有不同的位,他們是不是應該分別打印不同的東西? – user2793426

+0

它看起來不像代碼仍然會編譯。 (int j:deck)'中對'deck'的引用是什麼?整數數組的值初始化爲0,所以也許這就是你的問題;您需要使用索引而不是值。 – Nicole

+0

我修正了這個問題。我將它改爲傳統的for循環,並使其j <52,因此它編譯。它仍然爲每張卡打印出相同的值。我需要將每個元素在使用後移動到數組的末尾,但我不知道該怎麼做。 – user2793426

相關問題