【问题标题】:how to rewrite the programme?如何重写程序?
【发布时间】:2022-01-06 12:09:58
【问题描述】:

程序太长了。

在上半部分是不是使用循环的方式。

我尝试使用 for loop i for 列并循环 2-9 以使其更短。

嵌套for循环时遇到问题。

import java.util.Arrays;

public class cardGameArray {
    public static void main( String[] args ){
        String[][] card = new String[4][13];
        
        //Spades
        card [0][0] = "SA";
        card [0][1] = "S2";
        card [0][2] = "S3";
        card [0][3] = "S4";
        card [0][4] = "S5";
        card [0][5] = "S6";
        card [0][6] = "S7";
        card [0][7] = "S8";
        card [0][8] = "S9";
        card [0][9] = "ST";
        card [0][10] = "SJ";
        card [0][11] = "SQ";
        card [0][12] = "SK";
        
        //Hearts
        card [1][0] = "HA";
        card [1][1] = "H2";
        card [1][2] = "H3";
        card [1][3] = "H4";
        card [1][4] = "H5";
        card [1][5] = "H6";
        card [1][6] = "H7";
        card [1][7] = "H8";
        card [1][8] = "H9";
        card [1][9] = "HT";
        card [1][10] = "HJ";
        card [1][11] = "HQ";
        card [1][12] = "HK";
        
        //Diamonds
        card [2][0] = "DA";
        card [2][1] = "D2";
        card [2][2] = "D3";
        card [2][3] = "D4";
        card [2][4] = "D5";
        card [2][5] = "D6";
        card [2][6] = "D7";
        card [2][7] = "D8";
        card [2][8] = "D9";
        card [2][9] = "DT";
        card [2][10] = "DJ";
        card [2][11] = "DQ";
        card [2][12] = "DK";
        
        //Clubs
        card [3][0] = "CA";
        card [3][1] = "C2";
        card [3][2] = "C3";
        card [3][3] = "C4";
        card [3][4] = "C5";
        card [3][5] = "C6";
        card [3][6] = "C7";
        card [3][7] = "C8";
        card [3][8] = "C9";
        card [3][9] = "CT";
        card [3][10] = "CJ";
        card [3][11] = "CQ";
        card [3][12] = "CK";
        System.out.print("Spades"+"\n");
        for(int i = 0; i<13; i++){
            System.out.print(card[0][i]+"\t");
        }
        System.out.print("\n");
        System.out.print("Hearts"+"\n");
        for(int i = 0; i<13; i++){
            System.out.print(card[1][i]+"\t");
        }
        System.out.print("\n");
        System.out.print("Diamonds"+"\n");
        for(int i = 0; i<13; i++){
            System.out.print(card[2][i]+"\t");
        }
        System.out.print("\n");
        System.out.print("Clubs"+"\n");
        for(int i = 0; i<13; i++){
            System.out.print(card[3][i]+"\t");
        }   
    }
}

结果是:

Spades
SA      S2      S3      S4      S5      S6      S7      S8      S9      ST      SJ      SQ      SK
Hearts
HA      H2      H3      H4      H5      H6      H7      H8      H9      HT      HJ      HQ      HK
Diamonds
DA      D2      D3      D4      D5      D6      D7      D8      D9      DT      DJ      DQ      DK
Clubs
CA      C2      C3      C4      C5      C6      C7      C8      C9      CT      CJ      CQ      CK

我试试这个方法:

    import java.util.Arrays;
    int ans;
    public class cardGameArray {
        public static void main( String[] args ){
            String[][] card = new String[4][13];
            card[0][0] = SA;
            //Spades
            ans = short(card);
public static int short(int[] card ) {
            for(int i = 1; i<9 i++){
                 for(int k = 2; i<9; k++){
                     card[0][i] = "S" + k;
                 }
            }
            return ans;
         }
    }

在钓到k 2 - 9 然后循环i 后变成这样,它有 81 个。

所以输出只显示S9;而不是 S2 - S9。

SA
S9
S9
S9
S9
S9
S9
S9
S9
S9

这个逻辑错误。

【问题讨论】:

  • 如果您需要嵌套 for 循环的帮助,请向我们展示您的尝试。
  • 关于重构工作代码的问题与 Stack Overflow 无关。你可以试试代码审查。在发布之前检查他们的规则
  • 这个问题太笼统了。您的程序可以通过多种方式进行改进,所有这些都会导致程序“更小”。
  • 第二个for 循环显然是错误的(i 而不是k)但我不明白你为什么不以无限循环结束

标签: java arrays


【解决方案1】:

您可以采用这种方法:

public class CardsDemo {
    public static void main(String[] args) {
        String[] suit = {"Hearts", "Diamonds", "Clubs", "Spades"};
        String[] values = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" };

        String[][] cards = new String[4][13];
        
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 13; j++) {
                cards[i][j] = values[j] + " of " + suit[i];
            }
        }
        
        Stream.of(cards).flatMap(Stream::of).forEach(System.out::println);
    }
}

这个程序的输出将是

Ace of Hearts
2 of Hearts
3 of Hearts
4 of Hearts
5 of Hearts
6 of Hearts
7 of Hearts
8 of Hearts
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 2010-10-19
    • 1970-01-01
    相关资源
    最近更新 更多