如何在数组中打印特定值,其他值更改为“*”?

时间:2010-02-25 06:24:56

标签: java

例如,在以下布局中:

.    8 * * *

.    * * * *

.    * 8 * *

.    * * * *

所有面朝下的牌都由*表示。面朝上的8对位于坐标(1,1)和(2,3)处。

我已经完成了2D数组,现在我不得不打印*。我所做的只是打印* * * *。我不知道如何在数组中打印8

任何帮助?

public static void Shuffles(){

    int[][]a = new int[4][4];
    for (int i =0; i<4;i++){
        for (int j=0;j<4;j++){

            System.out.print("*");
            System.out.print(" ");
        }
        System.out.println("");
        System.out.println("");
    }


}

public static void main(String [] args){

    List<Integer> randoms = new ArrayList<Integer>();
    Random randomizer = new Random();
    int [][] memory = new int[4][4];

    for(int i = 0; i < 8; ) {
      int r = randomizer.nextInt(8)+1;
      if(!randoms.contains(r)) {
        randoms.add(r);
        ++i;
      }
    }

    List<Integer> clonedList = new ArrayList<Integer>();
    clonedList.addAll(randoms);
    Collections.shuffle(clonedList);
    randoms.addAll(clonedList);

    for(int i=0; i < 4; i++){
            memory[0][i] = randoms.get(i);
            memory[1][i] = randoms.get(i+4);
            memory[2][i] = randoms.get(i+8);
            memory[3][i] = randoms.get(i+12);
    }

    for (int i =0; i<4;i++){
        for (int j=0;j<4;j++){

            System.out.print(memory[i][j]);
            System.out.print(" ");
        }
        System.out.println("");
        System.out.println("");
    }


    int x1,y1,x2,y2;
    Scanner input = new Scanner(System.in);

    System.out.print("Please enter the coordinate [x1] : ");
    x1 = input.nextInt();
    while((x1<1) || (x1>4)){
        System.out.print("Invalid coordinate!! Re-enter [x1] : ");
        x1 = input.nextInt();
    }

    System.out.print("Please enter the coordinate [y1] : ");
    y1 = input.nextInt();
    while((y1<1) || (y1>4)){
        System.out.print("Invalid coordinate!! Re-enter [y1] : ");
        y1 = input.nextInt();
    }

    System.out.print("Please enter the coordinate [x2] : ");
    x2 = input.nextInt();
    while((x2<1) || (x2>4)){
        System.out.print("Invalid coordinate!! Re-enter [x2] : ");
        x2 = input.nextInt();
    }

    System.out.print("Please enter the coordinate [y2] : ");
    y2 = input.nextInt();
    while((y2<1) || (y2>4)){
        System.out.print("Invalid coordinate!! Re-enter [y2] : ");
        y2 = input.nextInt();
    }

    x1=x1-1;
    y1=y1-1;
    x2=x2-1;
    y2=y2-1;

    if(memory[x1][y1] != memory[x2][y2]){
        Shuffles();
    }

} }

这是我到目前为止所做的一切......

3 个答案:

答案 0 :(得分:1)

你在找这个吗?


// k is the number to display
//a[][] is the array

public static void Shuffles(int k, int[][]a) { for (int i =0; i<4;i++) { for (int j=0;j<4;j++) { if(a[i][j] == k) { System.out.print(a[i][j]); } else { System.out.print("*"); } System.out.print(" "); } System.out.println(""); System.out.println(""); } }

答案 1 :(得分:0)

一次打印一个位置。对于每一个,检查卡是否正面朝上,如果是,则打印该值,否则打印星形。 System.out.print()将允许您在没有新行的情况下进行打印。

答案 2 :(得分:0)

您在寻找嵌套循环吗?

for (int y = 0; y < 8; y++)
{
    for (int x = 0; x < 8; x++)
    {
        // Use 'x' and 'y' here to index your 2-D 8x8 array
        system.out.println( ... );
    }
}