-5

これはばかげた質問で、質問するのは恥ずかしいと思いますが、時間に追われて燃え尽きています。

私はこのサンプル入力を持っています:

1 4 2
3 0 5
6 7 8

3 1 2
6 4 5
0 7 8

-1 -1 -1

数字の各グループは8パズルのボードを表しており、テキストファイルに表示されるボードの数はわかりません。私はその終わりが-でマークされていることを知っているだけです1 -1 -1.

私はこのことの論理が単純であることを知っています、私はただ疲れていて、コードを機能させることができません。

最初のボードの出力は次のようになります。

142305678

そして2番目のもののために

312645078

私が得ている:

142142142 
312312312 

これまでの私のコードは次のとおりです。

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();





     }*/
    }

}
4

1 に答える 1

2
...
br.readLine();
...

を呼び出しreadLine()ますが、実際に割り当てたり、他のことをしlineたりすることはありません。したがって、最初の行を何度も再利用し続けます。

于 2009-12-10T01:15:23.837 に答える