我正在尝试学习如何提示用户输入文件名,而不是预先定义它,以便Java可以使用扫描程序并通读它。我编写了一个程序来执行我需要它做的事情,但只有在预定义文件时才会这样做。
我在网站上查找了一些重复的问题,并找到了一些,但问的范围比我的位置更先进。任何人都可以向我提供一些关于如何提示用户输入他/她想要的文件的指导,而不是预先定义它(如下面的代码设置为)。
注意 - 这是假设读入的文件具有整数< 0和>因此,为什么最小/最大函数是按照它们的方式完成的......只是想一步一步地教自己。
import java.io.*;
import java.util.*;
public class ProcessNumbers {
public static void main(String[] args) throws FileNotFoundException {
Scanner input = new Scanner(new File("inputdata.txt"));
int max = 0;
int min = 0;
int sum = 0;
int count = 0;
double average = 0;
System.out.println("Enter file name: "); //currently a println for ease of reading via Run
while (input.hasNext()) {
if (input.hasNextInt()) {
int number = input.nextInt();
sum += number;
count++;
average = (double) (sum) / count;
if (number > max) {
max = number;
}
if (number < min) {
min = number;
}
} else {
input.next();
}
}
System.out.println("Maximum = " + max);
System.out.println("Minimum = " + min);
System.out.println("Sum = " + sum);
System.out.println("Count = " + count);
System.out.println("average = " + average);
}
}
答案 0 :(得分:1)
试试这个:
System.out.println("Enter file name: ");
Scanner fileNameScanner = new Scanner( System.in );
String fileName = "";
if ( fileNameScanner .hasNext() ) {
fileName = fileNameScanner.next();
}
...
使用fileName
字符串创建一个File
对象,并根据您的要求使用。
答案 1 :(得分:0)
最简单的方法是替换
new File("inputdata.txt")
与
new File(args[0])
这样,第一个命令行参数将被视为文件名。
答案 2 :(得分:0)
您可以使用Scanner
来读取用户的输入(它不仅仅是从File
读取):
Scanner prompt = new Scanner(System.in);
System.out.print("Enter name of the file: ");
String name = prompt.next(); // enter "inputdata.txt"
Scanner input = new Scanner(new File(name));
// ...
答案 3 :(得分:0)
另一种方法是使用Console。 您可以用扫描仪替换从新方法返回的文件中读取:
Scanner input = new Scanner(getFileFromUser());
...
private static File getFileFromUser() {
Console c = System.console();
if (c == null) {
System.err.println("No console.");
System.exit(1);
}
String filePathname = c.readLine("Enter file pathname: ");
return new File(filePathname);
}
另外,请不要忘记在 main 方法结束时关闭扫描仪,以避免资源泄漏:
input.close();