No.
It would be nice to allow the user to give the name of the file from which data will be read. The following program does that:
import java.util.Scanner;
import java.io.*;
class NamedFileInput
{
public static void main (String[] args) throws IOException
{
int num, square;
// this Scanner is used to read what the user enters
Scanner user = new Scanner( System.in );
String fileName;
System.out.print("File Name: ");
fileName = user.nextLine().trim();
File file = new File( fileName ); // create a File object
// this Scanner is used to read from the file
Scanner scan = new Scanner( file );
while( scan.hasNextInt() ) // is there more data to process?
{
num = scan.nextInt();
square = num * num ;
System.out.println("The square of " + num + " is " + square);
}
}
}
First a Scanner
is set up to read what the user types:
Scanner user = new Scanner( System.in ); String fileName;
Then the user is prompted and the file name is read in using this Scanner
.
The trim()
method trims off spaces from both ends of the file name.
System.out.print("File Name: "); fileName = user.nextLine().trim();
Then a second Scanner
object is constructed and connected to the
named disk file.
This might result in an IOException
,
so main()
must declare throws IOException
.
File file = new File( fileName ); // create a File object Scanner scan = new Scanner( file );
After this, the program works as before.
If the user enters a name of a file that does not exist, will the program end gracefully?