package addlinenumbers;
import java.util.Scanner;
import java.io.PrintWriter;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class AddLineNumbers {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String sentinel = new String();
int i=0;
try
{
FileOutputStream fos = new FileOutputStream
("dataInput.txt", true); //true means we will be appending to dataInput.txt
PrintWriter pw = new PrintWriter (fos);
//write data to the file
while(!(sentinel.equals("-1")))
{
System.out.println("Please enter strings to prepend to 'dataInput.txt'; -1 to EXIT: ");
pw.print(input.nextLine());
i++;
}
}
catch (FileNotFoundException fnfe)
{
System.out.println("Unable to find dataInput.txt...");
}
catch (IOException ioe)
{
ioe.printStackTrace(System.out);
}
finally
{
System.out.println("# of objects: " + i);
System.out.println("Closing file...");
input.close();
}
}
}
현재 내 출력은 끝없이 (해당 프로젝트 폴더에) 'dataInput.txt'에 문자열을 입력달라고 것이지만 그것은 것 적절한와 while 루프에서 종료하지 자바 문자열의 센티널. 내가 여기서 뭔가를 놓치고 있니? ==
을 사용하고 있지 않습니다. "-1"은 루프 백을 제외한 아무것도하지 않습니다. 이면을 걷어 내고 텍스트 파일에 입력을 앞쪽으로 쓰고 파일을 닫습니다.Java while-loop에서 Sentinel이 작동하지 않습니다. 텍스트 파일에 기록하지의 PrintWriter
또한! 결과적으로 while 루프 입력에서 가져온 것이 없으며 'dataInput.txt'파일로 전송됩니다. 이유가 확실하지 않습니다.
도움이 될 것입니다.
EDIT : FYI와 마찬가지로, 나는 센티넬과 함께 while 루프를 사용해야합니다. 이 문제에 대해 저에게 많은 도움을 주신 모든 분들께 감사드립니다.
# 2편집 : 계정 MadProgrammer의 훌륭한 조언으로 촬영, 내 출력에 남아있는 하나의 작은 문제가 남아있어 : 당신이 볼 수 있듯이
run:
Please enter strings to prepend to 'dataInput.txt'; -1 to EXIT:
David
Goliath
Please enter strings to prepend to 'dataInput.txt'; -1 to EXIT:
Delilah
Samson
Please enter strings to prepend to 'dataInput.txt'; -1 to EXIT:
-1
# of objects prepended: 2
Closing file...
BUILD SUCCESSFUL (total time: 18 seconds)
, 그것은 단지 두 물체에 걸리는 그들이 "골리앗 "및"Samson "이며 텍스트 파일에 기록 된 유일한 문자열입니다. 기술적으로 그것은 4 개의 객체를 가져야하며 "David"과 "Delilah"은이어야합니다. 그러나 텍스트 파일에 포함되어야합니다.
도움을 주시면 감사하겠습니다. sentinel
가 변경되지 않기 때문에
루프에서'센티넬 '을 업데이트하지 않으므로 절대로 변경되지 않습니다. – MadProgrammer
* "또한! 결과적으로 while 루프 입력에서 가져온 것이 없으며 'dataInput.txt'파일로 전송됩니다. 이유는 확실하지 않습니다. "* 아마도 증기가 닫히지 않기 때문일 것입니다. – MadProgrammer
[try-with-resources] (https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html)를보십시오.), 당신의 삶을 편하게 해줄 것입니다 – MadProgrammer