2009-12-10 40 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