在Java中向数组中的一个索引追加两个字符串
我现在已经完全按照我想要的方式修好了。如果其他人也有同样的问题,我认为这是建立一副牌的最简单、最有效的方法。您可以使用deck[random][0]和deck[random][1]中的随机变量来挑选单个卡片。 感谢所有帮助,以下是我的代码:在Java中向数组中的一个索引追加两个字符串,java,arrays,list,for-loop,append,Java,Arrays,List,For Loop,Append,我现在已经完全按照我想要的方式修好了。如果其他人也有同样的问题,我认为这是建立一副牌的最简单、最有效的方法。您可以使用deck[random][0]和deck[random][1]中的随机变量来挑选单个卡片。 感谢所有帮助,以下是我的代码: public class NewDeck { public static void main(String[] args) { String[] suits = new String[] { "Clubs", "Diamonds"
public class NewDeck {
public static void main(String[] args) {
String[] suits = new String[] { "Clubs", "Diamonds", "Spades", "Hearts" };
String[] faces = new String[] { "Ace", "King", "Queen", "Jack" };
String[][] deck = new String[suits.length * (faces.length + 9)][2];
int a = 0;
for (String y : suits) {
for (String x : faces) {
deck[a][0] = x;
deck[a][1] = y;
a++;
}
}
for (String y : suits) {
for (int p = 2; p < 11; p++) {
deck[a][1] = y;
String pp = Integer.toString(p);
deck[a][0] = pp;
a++;
}
}
for (int p = 0; p < deck.length; p++) {
System.out.print(deck[p][0] + " of ");
System.out.println(deck[p][1]);
}
}
}
公共类NewDeck{
公共静态void main(字符串[]args){
字符串[]套装=新字符串[]{“梅花”、“钻石”、“黑桃”、“红心”};
字符串[]面=新字符串[]{“Ace”、“King”、“Queen”、“Jack”};
字符串[][]组=新字符串[suits.length*(faces.length+9)][2];
int a=0;
适用于(y系列:套装){
用于(字符串x:面){
甲板[a][0]=x;
甲板[a][1]=y;
a++;
}
}
适用于(y系列:套装){
对于(int p=2;p<11;p++){
甲板[a][1]=y;
字符串pp=Integer.toString(p);
甲板[a][0]=pp;
a++;
}
}
对于(int p=0;p
您可能需要更改此选项
deck.add(suits[suit], faces[face]);
与
因为您的想法是连接列表中的元素并将其添加到组列表中 您应该将参数类型添加到字符串中,并创建一个
对
类。请注意,泛型需要1.5版或更高版本的Java编译器
class Pair {
private final String face;
private final String suit;
Pair(String suit, String face) {
this.face = face;
this.suit = suit;
}
@Override
public String toString() {
return "(" + suit + ", " + face + ")";
}
}
然后,您可以使用适当的List
方法get
和size
按如下所示使用该对
类:
List<Pair> deck = new ArrayList<Pair>();
List<String> suits = new ArrayList<String>();
suits.add("Hearts");
suits.add("Diamonds");
suits.add("Clubs");
suits.add("Spades");
List<String> faces = new ArrayList<String>();
faces.add("Ace");
faces.add("King");
faces.add("Queen");
faces.add("Jack");
for(int suit = 0; suit < suits.size(); suit++){
for(int face = 0; face < faces.size(); face++){
deck.add(new Pair(suits.get(suit), faces.get(face)));
}
}
List deck=newarraylist();
List suites=new ArrayList();
西装。添加(“红心”);
诉讼。添加(“钻石”);
添加(“俱乐部”);
诉讼。添加(“黑桃”);
列表面=新的ArrayList();
面。添加(“Ace”);
面。添加(“国王”);
加上(“女王”);
面。添加(“杰克”);
对于(int suit=0;suit
如果您重写
Pair
的toString
方法,您还可以System.out.println(deck)
来获得所需的数组列表的字符串表示形式
,您不能在列表的一个索引中存储两个值。但是你能做的是选项1
存储连接\string-like
改变
deck.add(suits[suit], faces[face]);
与
然后输出甲板[2]=西装、脸
选项2
将字符串列表更改为对象列表,该对象包含西装和脸部的细节
public class Deck {
private String suit;
private String face;
// getter and setters;
}
然后列表变成
List<Deck> deck
它会给你一个编译错误-
deck.add(suits[suit],faces[face])代码>,deck不是地图实例。为什么不创建一个具有两个属性“Suit”和“Face”的类卡?这就是Java的全部内容!@技术白痴:我在for循环中得到一个错误:“长度无法解析或不是一个字段”,并且在-deck上有一个错误。add(suits[suit],faces[face]);-说“表达式的类型必须是数组,但解析为列表”非常有效!但是我恐怕不能完全理解你的所有代码,所以我想我可能需要学习更多的java,然后才能开始制作我目前无法完成的游戏。但是有了你给我的,我也许可以继续制作游戏,我想我只能通过尝试我以前没有做过的事情来学习。非常感谢。由于泛型仅在Java1.5中引入,所以仍然有许多java集合的教程和书籍已经过时。我认为可以从这里开始(简短且包含更多链接)。也许能找到一本好的最新Java书籍?
public class Deck {
private String suit;
private String face;
// getter and setters;
}
List<Deck> deck
deck.add(new Deck(suits[suit], faces[face]))