Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
there are some bugs in my code!Hi, I can't see where the error is! It can't count the surrounding stars correctly! it always ignores some of them! Note: You can see lots of commented lines, which I use for debugging. // Code begins import java.util.*; public class Main { public static boolean[][] mined; public static boolean[][] opened; public static boolean exploded = false; public static int n; public static void main(String[] args) { Scanner scanInt = new Scanner(System.in); Scanner scanLine = /*new Scanner( // "...**..*\n......*.\n....*...\n........\n........\n.....*..\n...**.*.\n.....*..\nxxx.....\nxxxx....\nxxxx....\nxxxxx...\nxxxxx...\nxxxxx...\nxxx.....\nxxxxx..."); //*/new Scanner(System.in); n = /*8;// */scanInt.nextInt(); // System.out.println(n); mined = new boolean[n][n]; opened = new boolean[n][n]; for (int i = 0; i < n; i++) { String line = scanLine.nextLine(); // .trim(); // System.out.println(line); for (int j = 0; j < n; j++) { if (line.charAt(j) == '*') { mined[i][j] = true; } else { mined[i][j] = false; } // System.out.println(mined[i][j]); } } for (int i = 0; i < n; i++) { String line = scanLine.nextLine(); // .trim(); for (int j = 0; j < n; j++) { if (line.charAt(j) == 'x') { opened[i][j] = true; if (mined[i][j]) { exploded = true; } } else { opened[i][j] = false; } } } // print(mined); // print(opened); // System.exit(0); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.print(getSqr(i, j)); } System.out.println(); } } public static char getSqr(final int x, final int y) { if (exploded && mined[x][y]) { return '*'; } else if (!opened[x][y]) { return '.'; } int count = 0, iTo, jTo; int i = ((x - 1) >= 0) ? x - 1 : x; iTo = ((x + 1) < n) ? x + 1 : x; int j = ((y - 1) >= 0) ? y - 1 : y; jTo = ((y + 1) < n) ? y + 1 : y; for (; i <= iTo; i++) { for (; j <= jTo; j++) { if (i != x && j != y && mined[i][j]) { count++; } } } char ret = ("" + count).charAt(0); return ret; } public static void print(boolean[][] a) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.print(((a[i][j]) ? 'x' : '.') + "" + i + "," + j + " "); } System.out.println(); } System.out.println(); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator