Hey, guys I have a checkerboard logic assignment here. my goal was to print out how many possible jumps red checkers can jump black checkers given random checker arrangements given by the infile. I have this running a working perfectly. For extra credit, we are asked to return the output of all red checkers that are capable of committing a double jump. My loops like right to me, but when I put in a certain infile i have imported called "test1.txt" it returns that there are two double jumps possible. I dont see these possible jumps. what is wrong with my loops in doubleJump()? the txt file of test 1 is easy to import it is just this: R_R___R_
_B_R_R_R
__R___B_
________
____R_R_
_B_R_B_B
B_B_R___
___B_B_B
Here is my code:
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.Scanner; public class Checkerboard { /** * @param args * Initializes a 2d array, a single array, and four integer variables. */ static char [][] checkerboard = new char [8] [8]; static Checker [] reds = new Checker[12]; static int redcounter; static int possibleJumps; static int doubleJumps; static Checker[] dubs = new Checker[12]; static int dubscounter; /** * reads in the infile and stores the 64 characters into the 8x8 2d array. * @param infile */ public void readFile(Scanner infile) { for(int row = 0; row< checkerboard.length; row++) { String value = infile.nextLine(); for(int col = 0 ; col<value.length();col++) { checkerboard [row] [col] = value.charAt(col); } } //CREATE A LOOPING STRUCTURE TO READ DATA FROM THE FILE AND //STORE IT INTO THE 2-D ARRAY FOR TASK #2 infile.close(); } /** * creates the empty 8x8 array */ public Checkerboard() { checkerboard = new char [8] [8]; } /** * the method counts the possible jumps black can jump red given the conditions. it then stores the value in recounter. * @return returns the counter and stores the counter value in possibleJums */ public static int countJumps() { for(int i = 0; i < 8; i++) { for(int j = 0; j<8; j++) { if(checkerboard[i][j] == 'R') { Checker red = new Checker(i,j); reds[redcounter] = red; redcounter++; } } } for(int i = 0; i < reds.length;i++) { if (reds[i] != null) { int row = reds[i].getRow(); int col = reds[i].getCol(); if(col>1 && row<6) { if(checkerboard[row+1][col-1]=='B'&& checkerboard[row+2][col-2] == '_') { possibleJumps++; } } if(col<6 && row<6) { if(checkerboard[row+1][col+1]=='B'&& checkerboard[row+2][col+2] == '_') { possibleJumps++; } } } } return possibleJumps; } public static int countDouble() { for(int i = 0; i < 8; i++) { for(int j = 0; j<8; j++) { if(checkerboard[i][j] == 'R') { Checker dub = new Checker(i,j); dubs[dubscounter] = dub; dubscounter++; } } } for(int i = 0; i < dubs.length;i++) { if (dubs[i] != null) { int row = dubs[i].getRow(); int col = dubs[i].getCol(); if(col<6 && row<4) { //check for right and left double jump if(checkerboard[row+1][col+1]=='B'&& checkerboard[row+2][col+2] == '_') { if(checkerboard[row+3][col+1]=='B'&&checkerboard[row+4][col]=='_') doubleJumps++; } } if( col < 4 && row < 4) { //check for right and right double jump if(checkerboard[row+1][col+1]=='B'&&checkerboard[row+2][col+2]=='_') { if(checkerboard[row+3][col+3]=='B'&&checkerboard[row+4][col+4]=='_') doubleJumps++; } } if( col>3 && row<4) //left left double jump { if(checkerboard[row+1][col-1]=='B'&&checkerboard[row+2][col-2]=='_') { if(checkerboard[row+3][col-3]=='B'&&checkerboard[row+4][col-4]=='_') doubleJumps++; } } if(col>1 &&row<4) { if(checkerboard[row+1][col-1]=='B'&&checkerboard[row+2][col-2]=='_') { if(checkerboard[row+3][col-1]=='B'&& checkerboard[row+4][col]=='_'); doubleJumps++; } } } } return doubleJumps; } /** * Main method creates a scanner and asks the user for the infile name. * creates the new obeject board and prints the array aswell as a return statement of possible jumps. * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); System.out.print("Please enter the file configuration name: " ); String input = in.nextLine(); Checkerboard board = new Checkerboard(); File file = new File(input); Scanner infile = new Scanner(file); board.readFile(infile); for(int i = 0; i<8; i++) { for(int j = 0; j<8; j++) { System.out.print(checkerboard[i][j]); } System.out.println(); } countJumps(); System.out.println("There are "+possibleJumps + " possible moves for Red that will result in at least one checker being captured."); System.out.println(); countDouble(); System.out.println("There are "+doubleJumps +" possible double jump moves for Red."); } }