2014-03-03 87 views
0

我正在嘗試學習如何提示用戶輸入文件名,而不是預定義文件名,以便Java可以通過掃描器並通過它進行讀取。我已經編寫了一個程序,可以完成我需要的操作,但只有在預定義文件時才能執行。提示用戶輸入文件名

我已經瀏覽了網站上的重複問題,並且發現了一些問題,但問題的範圍比我的位置要高一些。任何人都可以爲我提供一些關於如何提示用戶輸入他/她想要的文件的指導,而不是預先定義它(如下面的代碼設置爲)。

注 - 這是假設讀入的文件具有整數< 0和> 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

這裏接受的答案顯示瞭如何從用戶獲取字符串:http://stackoverflow.com/questions/5287538/how-to-get-basic-user-input-for-java你可以使用它來創建你的文件對象 –

+0

非常感謝。 – Rivers31334

回答

1

試試這個:

System.out.println("Enter file name: "); 
Scanner fileNameScanner = new Scanner(System.in); 
String fileName = ""; 

if (fileNameScanner .hasNext()) { 
    fileName = fileNameScanner.next(); 
} 
... 

使用fileName字符串,創建一個File對象,並根據您的要求使用。

0

最簡單的方法將與

new File(args[0]) 

通過這種方式,第一命令行參數將被視爲一個文件名來替換

new File("inputdata.txt") 

+0

新文件(args [0])? –

+0

完成了,謝謝 – sjr

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)); 
// ... 
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); 
} 

另外不要忘記關閉您的掃描儀在主要方法的末尾,以避免資源泄漏:

input.close();