[英]Having trouble with java card game
在開始之前,是的,這是一項家庭作業,因此顯然我沒有要求任何答案,但是如果有人可以在正確的方向幫助我或給我一些建議,我將不勝感激。
好吧,對於一個作業,我正在用Java玩黑傑克游戲。 目前,我有一個Card類,一個Deck類和一個Main(CardGameTester)。 現在我只和一個玩家(用戶)一起玩游戲,所以這很基本。 我的主課很亂,我可以上三等班,但我決定改用這種方式。
我遇到了幾個奇怪的錯誤,我相信是我弄亂了我的arraylist或與對象有關的東西。 如果有人可以幫助我,我將不勝感激,因為我此刻陷入困境。
嘗試編譯時出現的錯誤:
6 errors and 1 warning found:
--------------
*** Errors ***
--------------
File: E:\Documents\Java Files\Assignment 3\CardGameTester.java [line: 17]
Error: The method add(Card) in the type java.util.ArrayList<Card> is not applicable for the arguments (Deck)
File: E:\Documents\Java Files\Assignment 3\CardGameTester.java [line: 28]
Error: The method add(Card) in the type java.util.ArrayList<Card> is not applicable for the arguments (Deck)
File: E:\Documents\Java Files\Assignment 3\CardGameTester.java [line: 35]
Error: Type mismatch: cannot convert from Card to int
File: E:\Documents\Java Files\Assignment 3\Deck.java [line: 15]
Error: The constructor Card() is undefined
File: E:\Documents\Java Files\Assignment 3\Deck.java [line: 19]
Error: The method shuffle() is undefined for the type java.util.ArrayList<Card>
File: E:\Documents\Java Files\Assignment 3\Deck.java [line: 30]
Error: c cannot be resolved
-------------
** Warning **
-------------
File: E:\Documents\Java Files\Assignment 3\Card.java [line: 5]
Warning: The field Card.suits is never read locally
這是Card.java
public class Card
{
private int rankValue, suitValue;
private String ranks[] = {"Hearts", "Clubs", "Spades", "Diamonds"};
private String suits[] = {"Ace", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
public Card(int rank, int suit)
{
rankValue = rank;
suitValue = suit;
}
public String convertToString(int rank){
return ranks[rank];
}
public void setRank(int rank){
rankValue = rank;
}
public void setSuit(int suit){
suitValue = suit;
}
public int getRank(){
return rankValue;
}
public int getSuit(){
return suitValue;
}
public String toString(){
return "Rank: " + rankValue + "Suit: " + suitValue;
}
}
這是Deck.java:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Deck
{
private ArrayList<Card> cards = new ArrayList<Card>();
public Deck()
{
for(int a = 1; a <= 4; a++)
{
for(int b = 1; b <= 13; b++)
{
Card c = new Card();
cards.add(c);
}
}
cards.shuffle();
}
public void shuffle(){
Collections.shuffle(cards);
}
public String deal(){
int index = 0;
cards.get(index);
cards.remove(index);
return "You have been dealt a: " + c.toString();
index++;
}
}
這是我的Main CardGametester.java:
public class CardGameTester
{
public static void main(String[] args)
{
ArrayList<Card> hand = new ArrayList<Card>();
Deck d = new Deck();
Scanner scan = new Scanner(System.in);
System.out.println("Welcome to the game of Black Jack!\nWould you like to Start?");
String input = scan.nextLine();
if(input == "yes")
{
d.deal();
hand.add(d);
}
String input2;
while (input2 == "yes")
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Would you like to hit or stay?");
input2 = keyboard.nextLine();
d.deal();
hand.add(d);
}
int total;
for(int index = 0; index <= hand.size(); index++)
{
total = hand.get(index);
}
System.out.println("Your total value for you cards are: " + total);
if(total <= 21){
System.out.println("Congrats, you have won for not going over 21");
}
else
{
System.out.println("Sorry, you lose for going over 21");
}
}
}
您有Card
的ArrayList
,但正嘗試添加其他類型的Deck
:
ArrayList<Card> hand = new ArrayList<Card>();
hand.add(d); // d = Deck
最好在Deck.deal
返回卡的Deck.deal
以跟蹤您hand
卡。
另外,您正在致電:
Card c = new Card();
但是構造函數有兩個參數:
public Card(int rank, int suit)
deal
方法中有2個錯誤:
...
return "You have been dealt a: " + c.toString();
index++;
...
首先,將在此處定義Card
c
。 您可以使用:
Card c = cards.remove(index);
其次,在return
語句之后不允許使用任何語句,因此index++
不能出現在這里。
下一個:
錯誤:類型不匹配:無法從Card轉換為int
total = hand.get(index);
^ ^
int type Card type
您正在ArrayList
上調用不存在的方法
cards.shuffle();
您已經有一個方法可以調用
shuffle();
雖然不是編譯錯誤,但==
的使用將導致輸入字符串無法正確評估,因此請進行更改
if (input == "yes")
至
if ("yes".equals(input))
考慮使用枚舉來管理卡片等級和花色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.