2012-08-01 5 views
0

컴파일 될 때 이러한 클래스의 최종 작업은 입력을 요청하고 대화 상자에 문자열 배열을 표시해야합니다.

1 급JOptionPane에 문자열 배열이 표시되지 않습니다.

public class Card { 

    private int rank; 
    private int suit; 
    private String rankName; 
    private String suitName; 
    private String cardName; 

    public Card() { 
     rank = 0; 
     suit = 0; 
     rankName = ""; 
     suitName = ""; 
     cardName = ""; 
    } 

    public int getRank() { 
     return rank; 
    } 
    public void setRank(int rank) { 
     this.rank = rank; 
    } 
    public int getSuit() { 
     return suit; 
    } 
    public void setSuit(int suit) { 
     this.suit = suit; 
    } 
    public String getRankName() { 
     return rankName; 
    } 
    public void setRankName(String rankName) { 
     this.rankName = rankName; 
    } 
    public String getSuitName() { 
     return suitName; 
    } 
    public void setSuitName(String suitName) { 
     this.suitName = suitName; 
    } 
    public String getCardName() { 
     return cardName; 
    } 
    public void setCardName(String cardName) { 
     this.cardName = cardName; 
    } 

    public String toString() { 
     return cardName; 
    } 

} 



2 등석. 나는 이것을위한 쓰레기 고마워. 그러나 여기서, 문제는 어디에 있는가입니다. 대화 상자에 문자열 배열을 표시하지 않습니다. 아무것도 표시하지 않습니다.

import java.util.*; 

import javax.swing.JList; 
import javax.swing.JOptionPane; 
import javax.swing.JScrollPane; 

public class Deck { 

    public List<Card> cards = new ArrayList<Card>(); 

    public void assignIntegerValues(Card card) { 
     String[] suitNameArray = {"Clubs", "Spades", "Hearts", "Diamonds"}; 
     String[] rankNameArray = {"Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"}; 

     card.setSuitName (suitNameArray[card.getSuit()-1]); 
     card.setRankName (rankNameArray[card.getRank()-1]); 
     card.setCardName (card.getSuitName() + "-" + card.getRankName()); 
     JOptionPane.showMessageDialog(null, card.getCardName()); 
     Card card1 = new Card(); 
     cards.add(card1); 
    } 

    public void displayAll() { 
     JOptionPane.showMessageDialog(null, new JScrollPane(new JList(cards.toArray()))); 
    } 


} 



3 급

import java.util.ArrayList; 
import java.util.List; 

import javax.swing.JOptionPane; 

public class DisplayDeck { 

    public static List<Card> cards = new ArrayList<Card>(); 

    public static void main(String[] args) { 

     Card card = new Card(); 
     Deck deck = new Deck(); 
     int answer; 
     String again; 
     String[] nameOfCards; 

     do { 
      String suitString = JOptionPane.showInputDialog("Suit: "); 
      card.setSuit (Integer.parseInt(suitString)); 

      String rankString = JOptionPane.showInputDialog("Rank: "); 
      card.setRank (Integer.parseInt(rankString)); 

      deck.assignIntegerValues(card); 
      String answerString = JOptionPane.showInputDialog("Try again? (1/0) "); 
      answer = Integer.parseInt(answerString); 

     } while (answer == 1); 

     deck.displayAll(); 

    } 
} 

대단히 감사합니다!

+0

이 숙제입니까? –

+0

물론 숙제 일뿐입니다. @ 개비 : 숙제에 관한 질문을하고 숙제 태그를 사용하십시오. –

+0

고마워. 사실 그것은 숙제가 아닙니다. 우리에게 곧 시행 될 시험에서 연습 할 수 있도록 주어진 것입니다. –

답변

3

이 문제는 표시되지 않는 배열 (또는 더 나은 ArrayList)과 관련이 없습니다. 문제는 목록에 유용한 정보가 없으므로 표시 할 것이 아무것도 없다는 것입니다.

코드는 작성한대로 진행됩니다. 의미있는 정보가있는 카드를 갑판에 추가하지 않습니다. 당신은 갑판의 List<Card>에 아무것도 추가 곳을 봐 : 더 의미있는 정보가 등록되지 사용하면 기본 카드 개체마다를 추가하는

Card card1 = new Card(); 
cards.add(card1); 

. 모든 의미있는 정보는 폐기됩니다. 이것이 숙제이기 때문에, 나는 이것을 더 잘하는 방법을 다시 생각해 보라고 요청할 것입니다.

+0

고마워요. "의미있는 정보"는'cardName'에 있습니다. 그래서'cards.add (card.getcardName());'시도했지만 잘못된 것입니다. 나는 아직도 자바의 구문을 좋아하지 않는다. –

+0

@Gabby : cardName에 의미있는 정보가 있어도 정보가없는 빈 Card 객체를 새로 만들고 목록에 추가하여 폐기합니다. Card 객체 (card1)에 순위 또는 값 정보를 추가하여 어디에서 목록에 추가 할 수 있는지 확인하십시오. 그 약간의 코드를 보여주세요 (힌트 : 존재하지 않습니다). 당신이하고있는 일은 종이에 그림을 그리는 것과 비슷하지만 그림을 무시하고 대신 노트북에 종이 한장을 넣으면됩니다. –

+0

나는 이것을 위의 카드로 바꿨다.'Card card1 = new Card(); cards.add (card);'라고 표시하고 사용자가 지정한 최신 순위와 슈트를 표시합니다. 다시 한 번 감사드립니다. –

1

코드의 문제는 정보 (이름)를 저장하는 카드가 사용되지 않았 음을하고 을 폐기하고 얻는 새 카드 (에 데이터를 없음) 작성중인로 전달할 list

card.setCardName (card.getSuitName() + "-" + card.getRankName()); //hold data 
Card card1 = new Card(); // holds nothing (useless) 
cards.add(card1); // will have card with no data 

public void displayAll() { 
    JOptionPane.showMessageDialog(null, new JScrollPane(new JList(cards.toArray()))); 
    // has nothing to display 
} 
+0

고마워요! 방금 대신이 카드를'cards.add (card); '라고 사용했습니다. 이제 작동합니다. :) –

+0

@ GabbyToi 좋은 행운을 빕니다 –

관련 문제