私信TA

用户名:uq_88505829964

访问量:990

签 名:

等  级
排  名 15739
经  验 785
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:                     将J、Q、C、A分别替换成abcd以便排序,将dchs分别替换成1234以便于排序,然后用StringBuilder的对象
sb存储替换后的字符串,将每一个牌都存储到ArrayList中排序,排序后,用StringBuilder的对象sb1来存储排完序后的字符串,随后还原为原来的字符串,输出。


注意事项:注意大小写,且每次输入都是固定的5张牌。

参考代码:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    ArrayList<String> arrayList = new ArrayList<>();
    //存储无序的牌
   String s = sc.nextLine();
   //存储变换后的牌
   StringBuilder sb = new StringBuilder();
   //变换字符串
   for (int i=0;i<s.length();i++){
       if (s.charAt(i)=='J'){
          sb.append("A");
       }else if(s.charAt(i)=='Q'){
           sb.append("B");
       }else if (s.charAt(i)=='K'){
           sb.append("C");
       }else if(s.charAt(i)=='A'){
           sb.append("D");
       }else if (s.charAt(i)=='d'){
           sb.append("1");
       }else if (s.charAt(i)=='c'){
           sb.append("2");
       }else if (s.charAt(i)=='h'){
           sb.append("3");
       }else if (s.charAt(i)=='s'){
           sb.append("4");
       }
       //如果是2到10,就不需要变换
       else {
           sb.append(s.charAt(i));
       }
   }
   //存储到ArrayList数组中。
   for (int i=0;i<10;i+=2){
       arrayList.add(sb.substring(i,i+2));
   }
   //排序
   arrayList.sort(new Comparator<String>() {
       @Override
       public int compare(String s, String t1) {
          if (s.charAt(0)==t1.charAt(0)){
              return s.charAt(1)-t1.charAt(1);
          }else {
              return s.charAt(0)-t1.charAt(0);
          }
       }
   });
   //存储排完序后的数组
   StringBuilder sb1 = new StringBuilder();
   //将排完序后的字符串变换成原来的样子
   for (int i=0;i<arrayList.size();i++){
       if (arrayList.get(i).charAt(0)=='A'){
          sb1.append("J");
       }else if(arrayList.get(i).charAt(0)=='B'){
           sb1.append("Q");
       }else if (arrayList.get(i).charAt(0)=='C'){
           sb1.append("K");
       }else if(arrayList.get(i).charAt(0)=='D'){
           sb1.append("A");
       }else {
           sb1.append(arrayList.get(i).charAt(0));
       }
       if (arrayList.get(i).charAt(1)=='1'){
           sb1.append("d");
       }else if (arrayList.get(i).charAt(1)=='2'){
           sb1.append("c");
       }else if (arrayList.get(i).charAt(1)=='3'){
           sb1.append("h");
       }else if (arrayList.get(i).charAt(1)=='4'){
           sb1.append("s");
       }
       else {

           sb1.append(arrayList.get(i).charAt(1));
       }
   }
   s=sb1.substring(0,sb1.length());
   for (int i=0;i<10;i+=2){
       System.out.print( s.substring(i,i+2)+" ");
    }

}


 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

可以通过define将它字母直接定义成相应的数字吗?
2024-03-24 09:18:26
  • «
  • 1
  • »