0

首先,感謝您的到來,並花時間幫助解決問題。如何將.txt文件中每行字符串中的單個字符掃描爲二維數組?

我已經花了無數個小時搜索遍歷,仍然沒有找到我的問題的工作解決方案:如何使用掃描儀掃描.txt文件中每行字符串中的單個字符爲未知的二維數組尺寸是多少?

問題1:如何確定未知.txt文件的列數?還是有更好的方法來確定一個未知的二維數組的大小與.nextInt()方法,以及如何?

問題2:如何在控制檯上打印出2d數組而無奇怪[@#$^@^^錯誤?

問題3:如何讓掃描儀打印從.txt文件讀取到控制檯上的任何字符(使用2d數組(我知道,數組數組))?

這裏是我的殘缺碼給你一個問題的想法:

import java.util.Scanner; 
import java.io.File; 

public class LifeGrid { 

public static void main(String[] args) throws Exception { 

    Scanner scanner = new Scanner(new File("seed.txt")); 

    int numberOfRows = 0, columns = 0; 


    while (scanner.hasNextLine()) { 
     scanner.nextLine(); 
     numberOfRows++; 

    } 

    char[][] cells = new char[numberOfRows][columns]; 

    String line = scanner.nextLine(); // Error here 
    for (int i = 0; i < numberOfRows; i++) { 
     for(int j = 0; j < columns; j++) { 
      if (line.charAt(i) == '*') { 
      cells[i][j] = 1; 
      System.out.println(cells[i][j]); 
      } 
     } 
    } 
    System.out.println(numberOfRows); 
    System.out.println(columns); 
    } 
} 
+0

一旦文件到達文件末尾,就不能再次使用掃描儀。你必須爲此創建一個新的掃描儀。 – Tushar 2014-11-22 16:31:36

+0

所以我必須在while循環之後再次創建掃描儀? – Valentina 2014-11-22 16:33:24

回答

0

使用一次,不能恢復到起始位置的掃描儀。你必須再次創建一個新的實例。我修改了您的代碼,以便可能實現您正在嘗試執行的操作 -

import java.util.Scanner; 
import java.io.File; 

public class LifeGrid { 

public static void main(String[] args) throws Exception { 

    Scanner scanner = new Scanner(new File("seed.txt")); 

    int numberOfRows = 0, columns = 0; 

    while (scanner.hasNextLine()) { 
     String s = scanner.nextLine(); 
     if(s.length() > columns) columns = s.length(); 
     numberOfRows++; 

    } 

    System.out.println(numberOfRows); 
    System.out.println(columns); 
    char[][] cells = new char[numberOfRows][columns+1]; 

    scanner = new Scanner(new File("seed.txt")); 
    for (int i = 0; i < numberOfRows; i++) { 
     String line = scanner.nextLine(); 
     System.out.println("Line="+line+", length="+line.length()); 
     for(int j = 0; j <= line.length(); j++) { 
      if(j == line.length()) { 
       cells[i][j] = (char)-1; 
       break; 
      } 
      cells[i][j] = line.charAt(j); 
     } 
    } 
    System.out.println(numberOfRows); 
    System.out.println(columns); 
    for (int i = 0; i < numberOfRows; i++) { 
     for(int j = 0; j <= columns; j++) { 
       if(cells[i][j] == (char)-1) break; 
       System.out.println("cells["+i+"]["+j+"] = "+cells[i][j]); 
     } 
    } 
    } 
} 
+0

非常感謝! – Valentina 2014-11-22 16:45:42

+0

但是,如何使用方法show()打印2d數組;而不是打印出該行? @Tushar – Valentina 2014-11-22 16:58:55

+0

什麼是展示方法? – Tushar 2014-11-22 19:00:48

相關問題