2017-05-11 7 views
-1

안녕하세요으로 읽어! 텍스트 파일에서 문자/행을 읽는 것과 관련하여 질문이 있습니다. 필자는 파일에서 행을 읽는 함수를 구현할 수있었습니다. Greenfoot (Java)를 사용하여 32x32 블록을 사용하는 게임을 만듭니다. 각 "블록"/ "문자"x-/y- 좌표를 가져 와서 그것을 세계에 배치하여 해당 텍스트 파일에서 세계를 생성하고 싶습니다. 배열을 사용하는 것이 더 쉬울까요? 내 현재 코드는 다음과 같지만 좌표를 얻는 방법을 알아낼 수는 없습니다. 그것이 반환하는 해시 코드를 사용하여 작동 할 수 있습니까?자바 : 캐릭터의 좌표를 얻기 내가 성공하지 않고이 문제에 대한 솔루션을 찾고 있었어요 시간</p> <p>그래서 내가 여기에 질문을 거라고 생각, 파일

public void readFile(String filename) throws IOException 
{  
    String s; 
    int x = 0; 
    int y = 0; 

    // Create BufferedReader and FileReader 
    BufferedReader r = new BufferedReader(new FileReader(filename)); 

    // Try-catch block as exception handler 
    try { 
     while((s = r.readLine()) != null) { 

      // Create the blocks 
      GrassBlock A = new GrassBlock(); 

      // Place them in the world 
      addObject(A, x, y); 

      // Test to see, if the blocks get recognised 
      System.out.println(A); 

      DirtBlock B = new DirtBlock(); 
      System.out.println(B); 
      addObject(B, x, y); 
     }    
    } catch (IOException e) { 
     System.out.println("Fehler beim Öffnen der Datei"); 
    } finally { 

    } 
} 

내 파일은 다음과 다소 같습니다

내가 어떻게 할 수있는 것이이 있지만처럼 작동 할 수 물론 그래서는 모두 x와 y에 값이 "0"를 할당 한 것을 볼 수
0000000000 
0000000000 
AAAAAA00AA 
BBBBBB00BB 

나는 그 위치를 얻는다? 현재이 함수는 행을 읽고, (0, 0)에 블록을 생성하고 해시 코드로 콘솔에 블록을 표시 할 수 있습니다.

P.S 죄송합니다. 일부 용어에 잘못된 용어를 사용하면 프로그래밍에 익숙하지 않습니다. 비슷한

int y = 0; 
while ((s = ...) != null) { 
    // do something with s 
    y += 1; // or y++ 
} 
  • :

  • +0

    힌트 : 1. 파일의 형식은 무엇이며 파일에 좌표/블록 유형은 어떻게 저장됩니까? 2. 일반적으로 StackTrace ('e.printStackTrace()')를 catch 블록에 인쇄하거나 적어도 메시지 및 예외 클래스를 인쇄하는 것이 더 유용합니다. –

    +0

    줄 번호는 _y_ 좌표이고 각 행의 위치는 줄에있는 문자는 _x_? –

    +0

    @CarlosHeuberger 감사합니다! 그것은 0, A, B 등등을 가진 단순한 .txt 파일입니다. 나는 그것을 고칠 것입니다, 고마워요! –

    답변

    0

    그냥 아주 기본적인, 너무 많은 질문 코드를 변경하지 않고이 아닌 줄 번호 Y를 결정

    1. 을 완료 줄리안에게 감사 문자 위치 x를 줄 내부에 넣고 charAt을 사용하여 문자를 검색합니다.

      while ((s = ...) != null) { 
          int x = 0; 
          while (x < s.length()) { 
           char ch = s.charAt(x); 
           // do something with ch, x, y - test for 0, A or B and add block 
           x += 1; // or x++ 
          } 
          y += 1; // or y++ 
      } 
      

    참고 :이 다른 곳에서 필요하지 않기 때문에 x은 외부 (첫 번째) 루프 내에서 선언; x은 새로운 라인의 시작이기 때문에 내부 루프 전에 0으로 설정됩니다. 카운터를 사용할 때 루프 대신 while을 사용할 수 있습니다 (예 : x)

    +0

    도움을 주셔서 감사합니다.하지만 웬일인지 그것을 이해할 수는 없습니다. "무언가를해라"는 것은 무엇을 의미합니까?나는 아직도 프로그래밍을 이해하는데 결함이있어 나는 무엇을해야하는지 모른다. 그래서 뭔가가있는 동안 첫 번째 줄을 읽도록 프로그램에 지시합니다. 그런 다음 문자열을 사용하여 무언가를해야합니까? x 부분의 경우 문자를 읽은 다음 x를 0으로 다시 설정하고 파일 끝까지 x를 늘립니다. 그런 다음 y를 늘려 다음 줄로 가십니까? try-catch 블록에서 while 루프를 둘 다 넣어야합니까? –