Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于扑克游戏和比较器的问题?_Java_Comparator_Poker - Fatal编程技术网

Java 关于扑克游戏和比较器的问题?

Java 关于扑克游戏和比较器的问题?,java,comparator,poker,Java,Comparator,Poker,我正在尝试创建一个扑克游戏,其中我在Card类中创建了牌组,并使用比较器按字母顺序对牌组进行排序。我在比较器和我的庄家类中遇到了问题(这是我创建牌组、洗牌以及调用比较器的地方)。当我的CompareCards编译时,我的Dealer类将给出以下错误: Dealer.java:24: error: incompatible types: void cannot be converted to String String s = Collections.sort(deck);

我正在尝试创建一个扑克游戏,其中我在Card类中创建了牌组,并使用比较器按字母顺序对牌组进行排序。我在比较器和我的庄家类中遇到了问题(这是我创建牌组、洗牌以及调用比较器的地方)。当我的CompareCards编译时,我的Dealer类将给出以下错误:

    Dealer.java:24: error: incompatible types: void cannot be converted to String
    String s = Collections.sort(deck);
                               ^
 Note: Dealer.java uses unchecked or unsafe operations.
 Note: Recompile with -Xlint:unchecked for details.
我知道在进行排序时,必须包含比较器名称,但在本例中,这两种方法都不起作用。这是我的卡片课:

import java.util.*;
public class Card{
    String suit = null;
    String value = null;
    String rank = null;

    public static final String[] SUIT = {"C", "D", "H", "S" };

    public static final String[] RANK = {"A","2","3","4","5","6","7","8","9","T","J","Q","K"};

    public Card(int i, int j){
        suit = RANK [i];
        rank = SUIT [j];
        value = rank + suit;
    }
    public String getSuit(){
        return suit;
    }

    public String getRank(){
        return rank;
    }

    public String toString(){
        return(value);
    }
}
这是我的Comparator和CompareCards类:

public interface Comparator <Card>{
    public int compare(Card o1, Card o2);
}

public class CompareCards implements Comparator<Card>{
    public int compare(Card c1, Card c2){
        int x = 0;
        int y = 0;
        int dx = c1.getRank() - c2.getRank();
        if(dx == 0){
            x = c1.getRank()-c2.getRank();
        }
        else{
            y = c1.getSuit() - c2.getSuit();
        }
        return x;
    }
公共接口比较器{
公共整数比较(卡o1、卡o2);
}
公共类CompareCards实现Comparator{
公共整数比较(卡c1、卡c2){
int x=0;
int y=0;
int dx=c1.getRank()-c2.getRank();
如果(dx==0){
x=c1.getRank()-c2.getRank();
}
否则{
y=c1.getSuit()-c2.getSuit();
}
返回x;
}
这是经销商等级:

import java.util.*;
public class Dealer{

public static void main(String[]args){
    // creating deck
    List<Card> deck= new ArrayList<Card>();

    // calling Card
    for(int i = 0; i < 13  ; i++){
        for(int j = 0; j < 4 ; j++){
            // String s = RANK[i] +SUIT[j];
            deck.add(new Card(i, j));
        }
    }
    finding21(deck);
}

public static void finding21 (List deck){

    String s = Collections.sort(deck);
    System.out.println("Sorted deck: " + s);
    // After I sort the deck I am supposed to do a binary search
    // for the queen of hearts
     /* Collections.shuffle(deck);
          System.out.println("Shuffled deck: " + deck);
          String HQ =  Collections.binarySearch(deck, "HQ");
          System.out.print(HQ);

          System.out.println(queenH);*/
    }
}    
import java.util.*;
公共类交易商{
公共静态void main(字符串[]args){
//创建甲板
列表组=新的ArrayList();
//电话卡
对于(int i=0;i<13;i++){
对于(int j=0;j<4;j++){
//字符串s=等级[i]+西装[j];
增加(新卡(i,j));
}
}
finding21(甲板);
}
公共静态无效查找21(列表组){
字符串s=Collections.sort(deck);
系统输出打印项次(“分类甲板:+s);
//在我分类甲板之后,我应该做一个二进制搜索
//为了红心皇后
/*收藏。洗牌(牌组);
System.out.println(“混洗甲板:+甲板);
String HQ=Collections.binarySearch(deck,“HQ”);
系统输出打印(总部);
系统输出打印LN(queenH)*/
}
}    
执行就地排序,不返回值

这就是为什么编译器说不能将
void
转换为
String

void
类型用于没有返回值的函数

只需使用:

Collections.sort(deck);
如果要在之后打印已排序的
数据组
,可以使用:

System.out.println("Sorted deck: " + deck);
执行就地排序,但不返回值

这就是为什么编译器说不能将
void
转换为
String

void
类型用于没有返回值的函数

只需使用:

Collections.sort(deck);
如果要在之后打印已排序的
数据组
,可以使用:

System.out.println("Sorted deck: " + deck);

那么我该如何改变它呢?我该如何改变它呢?卡片类:好主意。西服和军衔的成员变量:好主意。制作字符串:糟糕的主意。字符串是为人准备的,计算机使用数字。将成员变量设为简单整数,然后转换为字符串显示。这将使您所需做的所有其他事情都变得更简单1000倍.Card类:好主意。suit和rank的成员变量:好主意。将其设置为字符串:糟糕的主意。字符串用于人,计算机使用数字。将成员变量设置为简单的整数,然后转换为字符串以显示。这将使您必须执行的所有其他操作变得更简单1000倍。