0

우선, 문제를 해결하기 위해 시간을내어 주셔서 감사합니다..txt 파일의 각 문자열 줄에서 개별 문자를 2D 배열로 어떻게 스캔합니까?

나는 많은 시간을 들여다 보면서 내 문제의 해결 방법을 찾지 못했습니다. 스캐너를 사용하여 .txt 파일의 각 줄 문자열에서 개별 문자를 2D 배열로 어떻게 스캔합니까? 치수?

문제 1 : 알 수없는 .txt 파일의 열 수는 어떻게 결정합니까? 또는 .nextInt() 메서드로 알 수없는 2 차원 배열의 크기를 결정하는 더 좋은 방법이 있습니까?

문제점 2 : 콘솔에서 이상한 [@ # $^@ ^^ 오류없이 2 차원 어레이를 어떻게 인쇄합니까?

문제 3 : 스캐너가 .txt 파일에서 콘솔로 읽는 문자를 인쇄하려면 어떻게합니까 (2 차원 배열 (예, 배열 배열) 알고 있습니다)?

여기 당신에게 문제의 아이디어를 제공하기 위해 내 불완전 코드입니다 :

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

+0

그래서 while 루프 후에 스캐너를 다시 만들어야합니까? – Valentina

답변

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

+0

그러나 show() 메서드를 사용하여 2 차원 배열을 인쇄하는 방법은 무엇입니까? 선을 인쇄하는 것과는 대조적으로? @ Tushar – Valentina

+0

쇼 방법은 무엇입니까? – Tushar