2011-05-06 4 views
4

int 값을 텍스트 파일에 저장하고 저장 한 다음 프로그램을 다시 시작할 때로드하는 작은 프로그램을 만듭니다. 지금, 나는 3 더 불리언 텍스트 파일에 저장 될 필요가 내 텍스트 파일에서 새로운 라인으로 이동 할 때마다, 나는 그것을 실 거예요 \ N으로, n은 작동하지 않고 새 줄을 사용하지 않습니다.

public Formatter x; 

x.format("%s", "" + m.getPoints() + "\n"); 

와 파일에 물건을 쓰고 있어요 새로운 라인으로 가면 int 값 바로 뒤에 값을 씁니다. 나는 새로운 라인을 시작하지 않고, 단지 직접 int 값 뒤에 부울을 쓸 것 모두

 x.format("%s", "" + m.getPoints() + "\n"); 
    x.format("%s", "" + m.getStoreItem1Bought() + "\n"); 

x.format("%s%s", "" + m.getPoints() + "\n", "" + m.getBought() + "\n"); 

하지만, 둘 다 일을 시도했다. 이것에 대한 도움이 필요하십니까?

필자는 Windows 7 Ultimate 64 비트를 사용하고 있으며 텍스트 편집기는 Eclipse이며 Eclipse에서도 모든 코드를 실행하고 있습니다.

+0

Windows 시스템을 사용하고 있습니까? '\ n'은 시스템 의존적 인 줄 분리 자 대신 줄 바꿈을 삽입합니다. Windows에서 캐리지 리턴 다음에 줄 바꿈이옵니다.그 사이에 아무 것도없는 것처럼 보이게 할 수도 있습니다. –

+0

맞아요.하지만 '\ r \ n'을 요구하는 프로그램이 거의없고, 모두 내가봤을 때 상자 모양의 문자로 외로운 '\ n'을 보입니다.). – maaartinus

+0

영업 이익을 갱신했습니다. – Stan

답변

6

, 내가 사용하는 것이 좋습니다 것입니다 :

x.format("%d%n%s%n", m.getPoints(), m.getStoreItem1Bought()); 
+0

업데이트했다.'x.format ((Local) (null), "% d % n % s % n", m.getPoints(), m.getStoreItem1Bought());'. 최초의'null' 인수는, 지역 대응이 적용되지 않게합니다. –

+0

이것은 효과가 있었고 새로운 라인에 올려 놓았습니다. 모든 도움을 주신 분들께 감사드립니다. – Stan

3

형식을 사용하는 경우 \n 대신 %n을 사용해보세요. 이에 대한 자세한 내용은 Formatter API을보고이 페이지에서 "줄 구분 기호"를 검색하면 알 수 있습니다.

+1

내 텍스트 파일에 8 % nfalse % n을 출력했으나 작동하지 않았습니다. – Stan

+0

제 잘못입니다. PrintStream의 printf 메서드와 함께 사용되는 Formatter 클래스의 변형을 사용하고 있다고 생각했습니다. –

+1

이것은'Formatter.format' 메소드의 형식 문자열 부분에서'% n'에 대해서만 사용되며 인수에는 사용되지 않습니다. – maaartinus

4

사용이 대신 :이 옵션 작업

public static String newline = System.getProperty("line.separator"); 

모두.

System.out.format("%s" + newline + "%s" + newline, "test1", "test2"); 
System.out.format("%s%n%s", "test1", "test2"); 

출력 :

test1 
test2 
test1 
test2 
+0

3nullfalsenull이 내 텍스트 파일로 출력되었지만 작동하지 않았습니다. – Stan

+0

이것은 실제로 작동해야합니다. 'newline'이 할당되기 전에 클래스 초기화에서 출력을하지 않는다면 말입니다. – maaartinus

+0

@Stan 사용 방법을 확인하십시오. 나는 대답을 – Aleadam

0

이 당신의 구문은 확실히 꽤 .. 재미 귀하의 문제는 출력을 포맷하는 방법입니다. 어쨌든 문자열을 함께 조각하는 경우 서식 지정 방법을 사용하는 이유는 무엇입니까? 또한 당신이 사용하고있는 스트림이 어느 곳에서나 우리가 조금 추측해야한다고 말한 이후로, 어쨌든.

어쨌든 나는 당신이 윈도우를 사용하고 있고, 2. 당신이 사용하고있는 편집기 (노트 패드에 베팅 한 것)가 윈도우의 올바른 개행 문자이기 때문에 \ r \ n에만 반응한다는 것을 배웠다. 이 문제를 해결하려면 \ n \ n 코드를 하드 코딩하지 말고 대신 % n을 사용하고 printf 함수를 올바르게 사용하십시오 (예 : 문자열을 함께 조각하지 마십시오). 당신이 정말로 함께 문자열을 조각 경우

그렇지 않으면 :

String newline = System.getProperty("line.separator"); 
x.format("%s", "" + m.getPoints() + newline); 

작동합니다.

구체적
1

여기에 문제 없음 : 내가 prefere 것이지만

System.out.format ("first: %s%s", "" + x + "\n", "" + y + "\n"); 

, 아닌 값을 \ 통합 N 형식의 문자열로하기 :

System.out.format ("second: %s\n%s\n", x, y); 

Formatter.format을 사용하면 동일하게 작동합니다.

+0

\ n을 사용하지 마십시오. 이는 Linux 시스템 (및 최신 Mac)에서만 안정적으로 작동합니다. % n 또는 System.getProperty ("line.separator")가 올바른 버전입니다. 해결책이 거의 없다면 코드를 작성할 필요가 없습니다. – Voo

+0

제품에 대한 귀하의 취향에 달려 있습니다. "\ n"이 필요하면 "\ n"을 사용하고, 휴대용 출력이 필요한 경우 "% n"을 사용하십시오. 현대 편집자 (현대가 아닌 메모장 제외)는 두 가지 형식의 입력을 모두 처리 할 수 ​​있습니다. –

관련 문제