views:

90

answers:

1

This is a dumb question and I feel embarrassed to ask it, but I'm pressed for time and I'm burnt out.

I have this sambple input:

1 4 2
3 0 5
6 7 8

3 1 2
6 4 5
0 7 8

-1 -1 -1

each group of numbers represents a board of the 8 puzzle, I don't know how many boards will appear on the text file. I only know its end is marked with -1 -1 -1.

I know the logic for this thing is simple, I'm just tired and can't put the code to work. Please put an explicit solution.

the output for the first board should be:

142305678

and for the second one

312645078

I'm getting:

142142142 
312312312

Here's my code so far:

package puzzle;

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

/**
 *
 * @author Administrator
 */
public class Main {



    /**
     * @param args the command line arguments
     */





    public static void saveTheLine (String [] splittedLine ) {


            }

    public static void main(String[] args) throws IOException{
        // TODO code application logic here

    FileReader fr = new FileReader("E://Documents and Settings//Administrator//My Documents//NetBeansProjects//8Puzzle//src//puzzle//ocho.in");

    BufferedReader br = new BufferedReader(fr);


  /*
    String line = br.readLine();

    while (!line.equals("-1 -1 -1")) {


        line= br.readLine();
         //ArrayList <String> board = new ArrayList<String>();


              String board = new String("");
               while (!line.equals(null))
                {

                   board = board + line;
                   line= br.readLine();

               }

                System.out.println("a board is " + board);

            }

*/




    while (true) {

        String line= br.readLine();
        if (!line.equals("-1 -1 -1")){

            if (line.equals(" ")) {
                continue;
            }


            String board = new String (" ");

            ArrayList<String> board2 = new ArrayList<String>();
            for (int i =0; i<3; i++){

                String [] splittedLine = line.split(" ");
                board = line+board;

                for (int addToBoardIndex =0; addToBoardIndex < splittedLine.length; addToBoardIndex++){

                    board2.add(splittedLine[addToBoardIndex]);
                }
                br.readLine();



            }

            //System.out.println(board);

            for (String s : board2) {
                System.out.print(s);
            }

            System.out.println(" ");

        }

        else if (line.equals("-1 -1 -1")) {
                break;
            }
    }


    /*String line = br.readLine();




    while (!line.equals("-1 -1 -1"))

    {


        //StringBuilder board = new StringBuilder("");

        ArrayList<String> board = new ArrayList<String>();

        for (int lineIndex =0; lineIndex<3; lineIndex++){

            line = br.readLine();
            String [] splittedLine = line.split(" ");
            board.add(splittedLine [0]);
            board.add(splittedLine [1]);
            board.add(splittedLine [2]);


        }




         for (String boardIndex: board){
             System.out.println(boardIndex);
         }



         String blankLine = br.readLine();





     }*/
    }

}
+2  A: 
...
br.readLine();
...

You call readLine(), but you don't actually assign it to line or do anything else with it. Thus you keep re-using the first line over and over.

Anon.
yeah, I overlooked. Thanks.
omgzor