По какой-то причине я продолжаю получать следующую ошибку при компиляции моего кода. У меня есть правильные директивы препроцессора (операторы импорта), и никаких синтаксических ошибок, но всякий раз, когда я компилирую мой код, который я далНе созданный файл (Java)
ответ
вероятно, ваш dateFile пуст, который может быть причиной для этого исключения
public int nextInt()
Осмотры следующий токен ввода как int. Вызов этого метода формы nextInt()
Возвращает: прерывания INT сканированных от входа
Выдает: InputMismatchException - если следующий маркер не соответствует регулярному выражению Целого числа, или вне диапазона
NoSuchElementException - если вход будет исчерпан
нелегалы tateException - если этот сканер закрыт
см http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner(java.io.File)
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Reader
{
public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException, IOException
{
File dateFile = new File("test.txt");
FileWriter fw = new FileWriter(dateFile);
BufferedWriter bw = new BufferedWriter(fw);
Scanner reader = new Scanner(dateFile);
try
{
// if file doesnt exists, then create it
if (!dateFile.exists())
{
dateFile.createNewFile();
bw.write("1");
bw.close();
System.out.println("Done");
}else
{
int duration;
String ans = JOptionPane.showInputDialog ("Enter the amount of problems per training session (with number in minutes):");
while(!ans.matches("[0-9]+"))
{
ans = JOptionPane.showInputDialog ("Please re-enter the amount of problems per training session (with number in minutes):");
}
duration = Integer.parseInt(ans);
System.out.println(duration);
bw.write(""+duration);
bw.flush();
int numSessions = reader.nextInt();
System.out.println("Number of sessions is: " + numSessions);
String fileName = ("sessionNumber"+numSessions);
File newSession = new File(""+fileName+".txt");
System.out.println(fileName);
if (!newSession.exists())
{
newSession.createNewFile();
System.out.println("IT DOES NOT EXIST!");
}
fw = new FileWriter(newSession.getAbsoluteFile());
bw = new BufferedWriter(fw);
bw.write(duration);
bw.close();
}
} catch (IOException e)
{
e.printStackTrace();
}
}
}
Теперь он должен работать. добавить эти две строки:
bw.write(""+duration);
bw.flush();
вы никогда не писать в файл. Помните .flush() ваш буфер .. если вы хотите, чтобы он записывался в файл, прежде чем закрыть его! Обратите внимание, что я изменил путь к файлу, чтобы он работал на моем компьютере, поэтому измените его снова
В вашем txt-файле нет int. –
Вы достигли конца своего файла, это похоже. – sstan