我创建了一个纸牌游戏,我不知道如何返回我的数组,因为我过去使用过不同的方法使用instanceof但从来没有像这样的整个数组。我把我的代码放在下面:
卡类 -
/**
*
* Constructor for a single card
*
*/
public class Card {
public String number;
public String suit;
public Card(String n, String s) {
number = n;
suit = s;
}
@
Override
public String toString() {
return number + suit;
}
}
甲板课 -
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
public class Deck {
private ArrayList < Card > cards;
public Deck() {
cards = new ArrayList < Card > ();
}
public void buildDeck() throws IOException {
List < String > cardLines = Files.readAllLines(Paths.get("cards.txt"));
for (int i = 0; i < cardLines.size(); i += 2) { //if lines read are smaller than file then read for another card
cards.add(new Card(cardLines.get(i), cardLines.get(i + 1))); //add new card to cards array
}
}
public List < Card > getDeck() {
return cards;
/*public void shuffle() {
// fill in
}*/
}
}
GUI类 -
import java.util.List;
import java.util.Scanner;
public class Game {
private Scanner scan;
private Deck deck;
private void runMenu() {
String response;
do {
printMenu();
System.out.println("What would you like to do:");
scan = new Scanner(System.in);
response = scan.nextLine().toUpperCase();
switch (response) {
case "1":
PrintDeck();
break;
case "2":
ShuffleCards();
break;
case "3":
DealCard();
break;
case "4":
MoveToPrevious();
break;
case "5":
Move2PilesBack();
break;
case "6":
AmalgamateInMiddle();
break;
case "7":
PlayforMe();
break;
case "8":
ShowLowScores();
case "Q":
break;
default:
System.out.println("Try again");
}
} while (!(response.equals("Q")));
}
private void ShowLowScores() {
// TODO Auto-generated method stub
}
private void PlayforMe() {
// TODO Auto-generated method stub
}
private void AmalgamateInMiddle() {
// TODO Auto-generated method stub
}
private void Move2PilesBack() {
// TODO Auto-generated method stub
}
private void MoveToPrevious() {
// TODO Auto-generated method stub
}
private void DealCard() {
// TODO Auto-generated method stub
}
private void ShuffleCards() {
// TODO Auto-generated method stub
}
private void PrintDeck() {
List < Card > buildadeck = deck.getDeck();
System.out.println(buildadeck);
}
private void printMenu() {
System.out.println("1 - Print the pack ");
System.out.println("2 - Shuffle");
System.out.println("3 - Deal a card");
System.out.println("4 - Move last pile onto previous one");
System.out.println("5 - Move last pile back over two piles");
System.out.println("6 - Amalgamate piles in the middle");
System.out.println("7 - Play for me");
System.out.println("8 - Show low scores");
System.out.println("q - Quit");
}
public static void main(String args[]) {
System.out.println("****Welcome to patience is virtue****");
Game cardsgame = new Game();
cardsgame.runMenu();
System.out.println("****Thanks for playing****");
}
}
我刚刚更新了代码,没有语法错误但是当我运行程序时,我在PrintDeck中遇到异常问题,任何想法为什么?
答案 0 :(得分:1)
我希望我明白你在问什么。 基本上你想要下面的方法,返回卡片列表,这样你就可以在GUI中打印列表了吗?
使用buildDeck
方法制作套牌,并将卡片添加到卡片列表中。你不需要返回任何东西。相反,您可以为卡组创建一个getter方法,如下所示。
public void buildDeck() throws IOException {
List<String> cardLines = Files.readAllLines(Paths.get("cards.txt"));
for (int i = 0; i < cardLines.size(); i += 2) { //if lines read are smaller than file then read for another card
cards.add(new Card(cardLines.get(i), cardLines.get(i + 1))); //add new card to cards array
}
}
public List<Card> getDeck() {
return cards;
}
在Game
课程中你应该这样做:
public class Game {
private Deck deck;
public void runMenu() {
deck = new Deck();
deck.buildDeck();
然后在printDeck中,您可以按如下方式使用此实例:
public void printDeck() {
for(Card card : deck.getDeck()) {
// print card.
}
}
完全不同的是,您的方法应该以小写字母开头。 printDeck
而非PrintDeck
。
答案 1 :(得分:0)
我会将printDeckMethod改为此。
<select ng-init="Request.CategoryID=Request.CategoryDescription " ng-model="Request.CategoryID" ng-options="category.CategoryID as category.CategoryDescription for category in Module.RequestReasons" >
<option default value="">Reasons</option></select>
通过这种方式,印刷版不会担心卡片的创建,只需打印它。您构建代码的代码中的其他地方。