2009-12-10 30 views
-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 

和第二個

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





    }*/ 
    } 

} 
+0

什麼問題?你得到了什麼類型的輸出,你期望什麼類型?發佈內容有什麼意義(更不用說了)註釋掉了代碼或空方法? – 2009-12-10 01:05:58

+1

那麼,你可能希望你的空行檢查是:if(line.trim()。equals(「」))而不是if(line.equals(「」))。 – Roman 2009-12-10 01:09:23

+0

爲什麼使用trim()? – andandandand 2009-12-10 01:11:31

回答

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

你叫readLine(),但你實際上並沒有將它分配給line或做別的吧。因此,您不斷重複使用第一行。

+0

是的,我忽略了。謝謝。 – andandandand 2009-12-10 01:22:31