0
사용자에게 쓰기 원하는 파일의 이름을 입력하라는 메시지를 표시하고 해당 .txt 파일을 만든 다음 해당 텍스트 줄을 작성하려고합니다. 그 파일에 저장하고 저장하십시오. do 내부에서는 저장하려는 파일의 이름에 대해 사용자 입력을 건너 뛰어 돌아 다니고 FileNotFoundException을 얻는 것으로 보이며 파일을 찾지 않아야합니다.파일을 만들 때 FileNotFound 예외가 발생합니다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
Scanner user = new Scanner(System.in);
Scanner docInName = null;
PrintWriter docOutName = null;
do {
System.out.println("Please enter the filename of the file you
would like to read from: ");
try {
docInName = new Scanner(new File(user.nextLine()));
} catch (FileNotFoundException e) {
System.out.println("File not found!");
}
} while (docInName == null);
int lineNum = docInName.nextInt();
BikePart[] bp = new BikePart[lineNum];
System.out.println("please enter the max cost for a part: ");
int cost = user.nextInt();
do {
System.out.println("please enter a name for the file to write to
(end with .txt): ");
String out = user.nextLine(); //PROBLEM HERE! SKIPS USER INPUT
try {
docOutName = new PrintWriter(out);
for (int i = 0; i < lineNum; i++) {
String line = docInName.nextLine();
String[] elements = line.split(",");
bp[i] = new BikePart(elements[0],
Integer.parseInt(elements[1]),
Double.parseDouble(elements[2]),
Double.parseDouble(elements[3]),
Boolean.parseBoolean(elements[4]));
double temp = Double.parseDouble(elements[3]);
if ((temp < cost && bp[i].isOnSale() == true)
|| (bp[i].getListPrice() < cost &&
bp[i].isOnSale() == false)) {
docOutName.write(line);
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
} while (docOutName == null);
user.close();
}
}
가능 중복 [스캐너) (다음 사용 후 꽵()을 스킵하고, nextInt() 또는 다른 nextFoo()? (https://stackoverflow.com/questions/13102045/scanner-is-skipping -nextline-after-using-next-nextint-or-other-nextfoo) –
사실은 그 반대 였고 최대 비용 라인을 호출 한 후 한 줄을 더 건너 뛸 필요가있었습니다. 그래도 좋은 생각, 고마워! –