2012-09-13 84 views
1

好吧,標題可能是騙人的。我想要做的就是帶上我的賓果遊戲程序,當打印第二張賓果卡時,我想用「X」取代所有「0」。我想我必須去改變數組到一個字符串,但我不知道從哪裏開始。如何將int數組更改爲一個字符串數組?

這裏是賓果程序:

import java.util.*; 
import java.io.*; 
import java.util.Arrays; 

public class Bingo 
{ 
public static final int ROWS = 5; 
public static final int COLS = 5; 
public static final int VERTICAL = 1; 
public static final int DIAGONAL = 2; 
public static final int HORIZONTAL = 3; 
public static int winFound; 
public static int currPick = 0; 
public static int randomPick = 0; 
public static int WinFound; 

public static void main(String[] args) 
{ 
int Totcards; 
int[][] card = new int[ROWS][COLS]; 
int[] picks = new int[25]; 

fillCard (card); 
printCard(card); 
playGame(card); 
printCard(card); 
finalCard(card); 

    } 

private static void fillCard (int[][] card) 
{ 
// FileReader fileIn = new FileReader("Bingo.in"); 
// Bufferreader in = new Bufferreader(fileIn); 

    try { 
    Scanner scan = new Scanner(new File("bingo.in")); 
     for (int i=0; i<card.length; i++){ 
       for (int j=0; j<card[0].length; j++){ 
       card[i][j] = scan.nextInt(); 
    } 
    } 
    } catch(FileNotFoundException fnfe) { 
     System.out.println(fnfe.getMessage()); 
    } 

} 

private static void printCard (int[][] card) 
{ 
    System.out.println("\n\tYOUR BINGO CARD : "); 
    System.out.println("\n\tB I N G O"); 
    System.out.println("\t----------------------"); 

    for (int i=0; i<card.length; i++){ 
      for (int j=0; j<card[0].length; j++){ 
       System.out.print("\t" + card[i][j]); 
       } 
    System.out.print("\n"); 
    } 
} 

private static void playGame (int[][] card) 
{ 

    int numPicks = 0;  

    System.out.println("\n\tBINGO NUMBERS PICKED AT RANDOM FROM BIN: ");  
    while (true) 
      { 
       markCard (card); // Generate a random num & zero-it out 
     winFound = checkForWin(card); // Look for zero sums 
     numPicks++; 

       if (winFound != 0) 
       { 
     if (winFound == 1) 
     { 
      System.out.print("\n\n\tYOU WIN WITH A VERTICAL WIN AFTER " + numPicks + " PICKS\n"); 
     } 
     else if (winFound == 2){ 
      System.out.print("\n\n\tYOU WIN WITH A DIAGONAL WIN AFTER " + numPicks + " PICKS\n"); 
     } 
     else if (winFound == 3){ 
      System.out.print("\n\n\tYOU WIN WITH A HORIZONTAL WIN AFTER " + numPicks + " PICKS\n"); 
     } 

       announceWin (numPicks); 
       return; 
       } 
      } 


    }   
private static void markCard (int[][] card) 
{ 
    int randomPick = (int) (Math.random() * 74) + 1; 


    for (int j = 0; j < ROWS; j++){ 
     for (int k = 0; k < COLS; k++){ 
      if (card[j][k]==randomPick) 
        card[j][k] = 0;}  
    } 
    System.out.print("\t " + randomPick + " "); 
System.out.print(""); 
} 

private static int checkForWin(int[][] card) 
{ 
    int sum=0; 

    for (int i = 0; i < ROWS; i++) 
     { 
     sum = 0; 
     for (int j = 0; j < COLS; j++) 
     sum += card[i][j]; 

     if (sum == 0) 
      return HORIZONTAL; 
     } 

     for (int j = 0; j < COLS; j++) 
     { 
     sum = 0; 
     for (int i = 0; i < ROWS; i++) 
      sum += card[i][j]; 

     if (sum == 0) 
      return VERTICAL; 
     } 

     sum = 0; 
     for (int i = 0; i < ROWS; i++) 
      sum += card[i][ROWS-i-1]; 
     if (sum == 0) 
      return DIAGONAL; 

     sum = 0; 
     for (int i = 0; i < ROWS; i++) 
      sum += card[i][i]; 

     if (sum == 0) 
      return DIAGONAL; 

     return WinFound; 
    } 

private static void makeCard(int[][] card, int[] picks) 
{ 
      int count = 100; 
      int currPick = 0; 
      for (int i=0; i<count; i++){ 
      currPick = (int)(Math.random() * 74) + 1; 
      System.out.print(" " + currPick + "\n"); 
    picks[i] = currPick; 
      } 
} 

private static void announceWin(int numPicks) 
{ 

} 

private static boolean duplicate (int currPick, int[] picks, int numPicks) 
{ 
    for (int i = 0; i < numPicks; i++){ 
        if (picks[i] == currPick){ 
          return true;} 
     } 
      return false; 

} 

private static void finalCard (int[][] card) 
{ 
    Arrays.sort(card); 
    final String stringRep = Arrays.toString(card); 
    final String[] out = 
     stringRep.substring(1, stringRep.length() - 1).split("\\s*,\\s*"); 

    System.out.println(Arrays.toString(out)); 
} 
    } 
+4

不要發表您的整個代碼,只需發佈​​相關部分。 – LanguagesNamedAfterCofee

回答

1

試試這個:

System.out.print("\t" + (card[i][j] == 0 ? "X" : card[i][j])) 
+0

工作,但它只是在一行中打印字符串。我需要它看起來像普通的打印卡方法。 – TheNameHobbs

+0

查看上面的編輯 - 這應該像間距方面的原始'printCard'。 – arshajii

1

你爲什麼不只是使用從一開始的字段的String[][]?您還是可以比較String值與int S(與Integer.valueOf例如),並通過這種方式,你不必切換類型的運行...

相關問題