Java 如何从纸牌游戏字符串数组中获取int值
我正在尝试一种创造战争的纸牌游戏。每位玩家每次抽1张牌,每张最多26张。现在我需要将卡片的字符串值转换为整数,这样我就可以用它们来确定谁的牌更大。这是我第一个使用数组的程序,这个程序有很多问题。我该怎么做呢 编辑:如果不清楚,我想问的是如何从字符串[]数字中获取int值,而无需手动赋值。为了看谁赢了每一手牌,我需要比较整数Java 如何从纸牌游戏字符串数组中获取int值,java,Java,我正在尝试一种创造战争的纸牌游戏。每位玩家每次抽1张牌,每张最多26张。现在我需要将卡片的字符串值转换为整数,这样我就可以用它们来确定谁的牌更大。这是我第一个使用数组的程序,这个程序有很多问题。我该怎么做呢 编辑:如果不清楚,我想问的是如何从字符串[]数字中获取int值,而无需手动赋值。为了看谁赢了每一手牌,我需要比较整数 import java.util.ArrayList; import java.util.Random; public class Card { String fi
import java.util.ArrayList;
import java.util.Random;
public class Card {
String finalCard = "";
int suit, number;
String [] suits = {"Heart" , "Diamond" , "Spade" , "Club"}; //suits
String [] numbers = { "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "Jack" , "Queen" , "King" , "Ace" }; //card values
String card = "";
public Card() {
}
public Card(int suits, int numbers)
{
suit = suits;
number = numbers;
}
public String toString()
{
String finalCard = numbers[number] + " of " + suits[suit];
return finalCard;
}
}
import java.util.ArrayList;
import java.util.Random;
public class FullDeck {
private ArrayList<Card> cards = new ArrayList<Card>();//card array list
public FullDeck()
{
for(int a =0; a<=3; a++) //loops through suits
{
for(int b =0; b<=12;b++) //loops through values
{
cards.add(new Card(a,b)); //creates adds cards to list
}
}
}
public Card drawRandomCard()
{
Random generator = new Random(); //picks random card
int index = generator.nextInt(cards.size());
return cards.remove(index); //removes card from list
}
public String toString()
{
String result = "Cards remaining in deck: " + cards; //not currently used
return result;
}
}
import java.applet.Applet;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import javax.swing.*;
public class WarUI extends JApplet
implements ActionListener {
JTextArea displayLabel = new JTextArea(""); //sets label to display message
JButton runButton = new JButton("Run"); //button that starts program
Container con = getContentPane(); //gets container
Card player1;
Card player2;
FullDeck hand1 = new FullDeck();
Card card = new Card();
public void init() {
con.setLayout(new FlowLayout());//sets flowlayout
con.add(new JLabel()); //jlabel container
con.add(runButton); //run button container
con.add(displayLabel); //display label container
runButton.addActionListener(this);//looks to see if run is clicked
}
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < 1; i++) {
player1= hand1.drawRandomCard(); //draws cards for player 1
player1.toString();
}
for (int i = 0; i < 1; i++) {
player2= hand1.drawRandomCard(); //draws cards for player 2
player2.toString();
}
displayLabel.setText(player1.toString() + "\n" + player2.toString() ); //displays both players values/suits
}
}
import java.util.ArrayList;
导入java.util.Random;
公务舱卡{
字符串finalCard=“”;
int套装,编号;
String[]suites={“Heart”、“Diamond”、“Spade”、“Club”};//suites
字符串[]数字={“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“杰克”、“女王”、“国王”、“王牌”};//卡片值
字符串卡片=”;
公共卡(){
}
公共卡(整数套装、整数号码)
{
西服=西服;
数字=数字;
}
公共字符串toString()
{
字符串finalCard=编号[编号]+“+诉讼[诉讼]”;
返回财务卡;
}
}
导入java.util.ArrayList;
导入java.util.Random;
公务舱全甲板{
private ArrayList cards=new ArrayList();//卡数组列表
公共甲板()
{
对于(int a=0;a要将String
对象转换为基元int
,只需使用Integer.parseInt()
方法,如下所示:
String card1="12";
String card2="20";
int Card1=Integer.parseInt(card1);
int Card2=Integer.parseInt(card2);
if(Card1>Card2)
{
System.out.println("You Win!");
}
首先,在类Card中使套装和数字保持静态。因为数组始终保持不变,并且不必在每次创建卡片时进行初始化。尽管您必须向Card类中的变量套装和数字添加getter
要检查哪张牌更高,你首先要检查哪些号码索引更高,然后再检查一张牌的花色索引
Card card1 = ...
Card card2 = ...
if(card1.getnumber() < card2.getnumber())
{
//card1 is lower
}else if(card1.getnumber() > card2.getnumber()){
//card2 ist lower
}else{
if(card1.getsuit() < card2.getsuit()){
//card1 is lower
}else if(card1.getsuit() > card2.getsuit()){
//card2 is lower
}else{
// Both Cards are the same
}
}
card1=。。。
卡片卡片2=。。。
if(card1.getnumber()card2.getnumber()){
//卡迪斯特下
}否则{
if(card1.getsuit()card2.getsuit()){
//card2更低
}否则{
//两张牌是一样的
}
}
请记住,在这个实现中,西服数组的顺序很重要您在程序的哪个部分遇到问题?您考虑过使用西服和等级的枚举吗?我不知道什么是枚举。我刚刚开始学习数组。您也可以通过创建一个具有西服和等级的卡片类来简化设计和值字段。该值将是您的int值,指示一个卡对象是否大于、小于或等于另一个卡对象,并将该值与人类可读的西服和等级字段解耦。实现一个可比较的接口并编写一个自定义的.equals()方法,您就可以开始了。您需要的唯一数组是牌组,它表示未放牌的牌和手牌,它表示每个玩家持有的牌。