2013-02-07 57 views
1

當導入的文件包含100個或更多數字時,下面的代碼可用。如果文件中剩餘的數字少於100個,我該如何讓循環停止?當數字少於100時,由於數組未滿而出現錯誤。使用導入文件的Java循環

try { 
    Scanner in = new Scanner(new File(filename)); 
    int[] aNums = new int[100]; 
    System.out.print("Array contents: "); 
    int i =0; 
    while (i < aNums.length){ 
     generated = in.nextInt() ; 
     aNums[i] = generated; 
     System.out.print(aNums[i]); 
     System.out.print(" "); 
     i++; 
    } 
    System.out.println(" "); 
    System.out.println(" "); 
    System.out.print("Array contents: "); 
    for (i = aNums.length - 1; i >= 0; i--) { 
     System.out.print(aNums[i]); 
     System.out.print(" "); 
    } 
} 
// Catch block, needed when using file input 
catch (FileNotFoundException e) { 
    System.out.println("That file was not found. Program terminating..."); 
    e.printStackTrace(); 
} 
+0

如果讀取次數少於100次或讀取的最多100個整數時,您希望它停止? – ogzd

+0

這兩個條件PLZ – user2052514

回答

2

只是檢查掃描儀,如果文件中有多個值:

while (i < len && in.hasNextInt()) 
+0

我試過這個,但in.hasNextInt dosn't似乎沒有工作。感謝您的回覆 – user2052514

+2

您的意思是什麼似乎沒有工作? –

+0

由於無法識別的條件而發生錯誤 – user2052514

0

試試這個

File file = new File(filename); 
Scanner in = new Scanner(file); 
int[] aNums = new int[file.length()]; 

我沒有嘗試..希望工程

0

嘗試這個:

List<Integer> integerList = new ArrayList<Integer>(); 

while(in.hasNextInt()) { 
    integerList.add(in.nextInt()); 
} 
int totalNum = integerList.size(); 
for(int i = 0; i < 100 && totalNum - i > 100; i++) { 
    aNums[i] = integerList.get(i); 
} 
+0

不能使用數組列表 – user2052514

+0

請問爲什麼? – ogzd

+0

那麼確定只是告訴使用數組 – user2052514