我知道代碼有點多大家都不想細看??!但是我真的不會搞排序那里??!求幫助 ??!
我的程序問題就是 排序的時候漢字排序不是按照要求的 黑桃然后紅桃等等這樣子,還有撲克牌編號的數(shù)字值和字母值要怎么比較?
比如說 2 和 J 。 不知道怎么重寫equals方法!求指導(dǎo)!
?
TIPS:下面是我所有的代碼 ,第一個是 CardList 類,所有主程序都在里面 ,第二個是 Card類,第三個是 People 類
?
import java.util.ArrayList;
import java.util.Arrays;
import
java.util.Collections;
import java.util.List;
import
java.util.Random;
import java.util.Scanner;
?
public class CardsList {
?
?public List<Card>
cardsList;
?
?public CardsList(){
? cardsList=new
ArrayList<Card>();
?}
?
?public void testAddAll(){
? Card[]
cards={new Card("黑桃","A"),new Card("黑桃","2"),new Card("黑桃","3"),new
Card("黑桃","4"),new Card("黑桃","5"),new Card("黑桃","6"),new Card("黑桃","7"),new
Card("黑桃","8"),new Card("黑桃","9"),new Card("黑桃","10"),new Card("黑桃","J"),new
Card("黑桃","Q"),new Card("黑桃","K"),
???? ? new Card("紅桃","A"),new
Card("紅桃","2"),new Card("紅桃","3"),new Card("紅桃","4"),new Card("紅桃","5"),new
Card("紅桃","6"),new Card("紅桃","7"),new Card("紅桃","8"),new Card("紅桃","9"),new
Card("紅桃","10"),new Card("紅桃","J"),new Card("紅桃","Q"),new
Card("紅桃","K"),
???? ? new Card("梅花","A"),new Card("梅花","2"),new
Card("梅花","3"),new Card("梅花","4"),new Card("梅花","5"),new Card("梅花","6"),new
Card("梅花","7"),new Card("梅花","8"),new Card("梅花","9"),new Card("梅花","10"),new
Card("梅花","J"),new Card("梅花","Q"),new Card("梅花","K"),
???? ? new
Card("方塊","A"),new Card("方塊","2"),new Card("方塊","3"),new Card("方塊","4"),new
Card("方塊","5"),new Card("方塊","6"),new Card("方塊","7"),new Card("方塊","8"),new
Card("方塊","9"),new Card("方塊","10"),new Card("方塊","J"),new Card("方塊","Q"),new
Card("方塊","K")};
? cardsList.addAll(Arrays.asList(cards));
?
System.out.println("撲克牌已經(jīng)準備好啦 ,可以開始游戲了!");
?
?}
?
?public void
testForEach(){
? System.out.println("撲克牌顯示:");
? for(Card
cd:cardsList){
?? System.out.print("撲克牌:"+cd.color+" "+cd.number+" ");
?
}
? System.out.println(" ");
?}
?public void testChangeTheList(){
?
System.out.println("這是打亂順序的紙牌了!!");
?
Collections.shuffle(cardsList);
?}
?
?public void
testpeopleGetCard(){
? Random random=new Random();
? Scanner console=new
Scanner(System.in);
? int k,k2,k3,k4;
? do{
??
k=random.nextInt(51);
?? k2=random.nextInt(51);
??
k3=random.nextInt(51);
?? k4=random.nextInt(51);
?
}while(k==k2&&k==k3&&k==k4&&k2==k3&&k2==k4&&k3==k4);
?
? System.out.println("請輸入所要創(chuàng)建角色ID:");
? String ID=console.next();
?
System.out.println("請輸入所要創(chuàng)建角色Name:");
? String name=console.next();
?
Card[] Acards={(Card)cardsList.get(k),(Card)cardsList.get(k2)};
? People
people1=new People(ID,name,Acards);
?
?
System.out.println("請輸入所要創(chuàng)建角色ID:");
? String ID2=console.next();
?
System.out.println("請輸入所要創(chuàng)建角色Name:");
? String name2=console.next();?
?
Card[] Bcards={(Card)cardsList.get(k3),(Card)cardsList.get(k4)};
? People
people2=new People(ID2,name2,Bcards);
?
?
?
?
?
System.out.println("角色創(chuàng)建成功!"+people1.name+" "+people2.name);
?
System.out.println("發(fā)牌成功??!");
? System.out.println("玩家:"+people1.name+"
"+Acards[0].color+" "+Acards[0].number+" "+Acards[1].color+"
"+Acards[1].number);
? System.out.println("玩家:"+people2.name+"
"+Bcards[0].color+" "+Bcards[0].number+" "+Bcards[1].color+"
"+Bcards[1].number);
? chooseTheBigger(Acards);
?
System.out.println("玩家1最大的牌為:"+Acards[1].color+Acards[1].number);
?
?
chooseTheBigger(Bcards);
?
System.out.println("玩家2最大的牌為:"+Bcards[1].color+Bcards[1].number);
?
?
Card[] cards={Acards[1],Bcards[1]};
? chooseTheBigger(cards);
?
System.out.println("最大的撲克牌為:"+cards[1].color+cards[1].number);
?
if(cards[1].equals(Acards[1])){
??
System.out.println("玩家"+people1.name+"獲勝了!");
? }else{
??
System.out.println("玩家"+people2.name+"獲勝了!");
? }
?
?}
?
?public
void chooseTheBigger(Card[] cards){
? List<Card> test=new
ArrayList();
? test.addAll(Arrays.asList(cards));
?
Collections.sort(test);
? cards[1]=test.get(0);
? for (Card card : test)
{
?? System.out.println("撲克牌:"+card.color+card.number);
? }
????? ?
?}
?
?public static void main(String[] args) {
? // TODO
Auto-generated method stub
????? ? CardsList cl=new CardsList();
????? ?
cl.testAddAll();
????? ? cl.testForEach();
????? ?
cl.testChangeTheList();
????? ? cl.testForEach();
????? ?
cl.testpeopleGetCard();
?}
}
?
public class Card implements Comparable<Card>{
?
?public String
color;
?public String number;
?public Card(String color,String
number){
? this.color=color;
?
this.number=number;
?}
?@Override
?public int compareTo(Card arg0)
{
? // TODO Auto-generated method stub
?
if(!this.color.equals(arg0.color)){
?? return
this.color.compareTo(arg0.color);
? }else{
?? return
this.number.compareTo(arg0.number);
? }
?}
?@Override
?public int
hashCode() {
? final int prime = 31;
? int result = 1;
? result = prime
* result + ((color == null) ? 0 : color.hashCode());
? result = prime *
result + ((number == null) ? 0 : number.hashCode());
? return
result;
?}
?@Override
?public boolean equals(Object obj) {
? if
(this == obj)
?? return true;
? if (obj == null)
?? return false;
?
if (!(obj instanceof Card))
?? return false;
? Card other = (Card)
obj;
? if (color == null) {
?? if (other.color != null)
??? return
false;
? } else if (!color.equals(other.color))
?? return false;
? if
(number == null) {
?? if (other.number != null)
??? return false;
? }
else if (!number.equals(other.number))
?? return false;
? return
true;
?}
}
?
?
?
public class People {
? ? public String id;
? ? public String
name;
? ? public Card[] cards;
? ? public People(String id,String
name,Card[] cards){
? ? ?this.id=id;
? ? ?this.name=name;
? ?
?this.cards=cards;
? ? }
}
2015-11-08
問題已經(jīng)解決了,根據(jù)正確順序創(chuàng)建兩個字符串,通過調(diào)用indexOf的方法進行比較大小。