Итак, во-первых, это домашняя работа, хотя и не моя.Это мой зять.Он обратился ко мне за помощью, так как я занимаюсь компьютерами, но я работаю только на C ++.Он читает с клавиатуры ввод в файл, используя System.in
, пока не получит EOF
.После этого он создает экземпляр Scanner
и вызывает на экземпляре nextLine
, чтобы попытаться получить filename
, и получает NoSuchElementException
.По словам Javadoc, это означает, что ввод не принимается, что кажется странным, что возвращаться при использовании System.in
и наборе текста на клавиатуре.Я подозреваю, что персонаж EOF
почему-то не расходуется.Его код должен быть в полночь сегодня вечером, и он сделает все остальное (я посоветовал ему использовать фиктивное имя файла и вернуться к проблеме).
Вот его код:
import java.util.*;
import java.io.*;
public class FileTest
{
public static void main(String[] args)
{
createFile();
readFile();
}
public static void createFile()
{
//Variables
InputStream istream;
PrintStream ostream;
istream = System.in;
ostream = System.out;
Scanner keyboard = new Scanner(System.in);
int lastEntry = 0;
final int EOF = -1;
//Asks user for filename.
try
{
String fileName;
System.out.println("Please enter the filename of the file you want to open: ");
fileName = keyboard.next();
//Creates specified file.
File currentFile = new File(fileName);
//Checks if file already exists.
while(currentFile.exists())
{
System.out.println(fileName + " already exists");
System.out.println("Error: To prevent tis file from being overwritten please enter another file name");
fileName = keyboard.nextLine();
}
//Asks user for information they want stored in file.
try
{
ostream = new PrintStream(fileName);
System.out.println("Please enter what you would like to put in the file and press Ctrl+Z when finished: ");
//Writes information to file.
try
{
while((lastEntry = istream.read()) != EOF)
ostream.write(lastEntry);
}
catch(Exception e)
{
System.out.println("Error: " +e.getMessage());
}
}
catch(Exception f)
{
System.out.println("Error: " +e.getMessage());
}
}
finally
{
}
}
public static void readFile()
{
InputStream input;
PrintStream output;
output = System.out;
int lastEntry = 0;
final int EOF = -1;
Scanner keyboard2 = new Scanner(System.in);
//Asks user for filename.
String newFile;
System.out.println("Please enter the filename of the file you want to open: ");
newFile = keyboard2.next();
}
}
Он получает ошибку NoSuchElementException
в строке newFile = keyboard2.next()
.Я просмотрел множество примеров и нашел людей, пишущих о данной проблеме, но я еще не нашел решения, поэтому решил, что поставлю свою (сомнительную) репутацию здесь для него.Кто-нибудь знает, как он может заставить это работать?