2017-08-10 51 views
0

我有以下代碼:更換特定號碼 - For循環

List<String> l1_0 = new ArrayList<String>(), l2_0 = new ArrayList<String>(),.....; 
List<Integer> l1_1 = new ArrayList<Integer>(), l2_1 = new ArrayList<Integer>()......; 
int lines1 = 0, lines2 = 0, lines3 = 0 .....; 

     Scanner s1 = new Scanner(new FileReader("file/path//t1.txt")); 


    while (s1.hasNext()) { 
     l1_0.add(s1.next()); 
     l1_1.add(s1.nextInt()); 
     lines1++; 
    } 
    s1.close(); 

    func1(l1_0,l1_1,lines); 

我必須爲40個文件執行相同的操作。

我們可以創建一個for循環來實現它嗎? 我正在考慮沿線的東西。

for (int i=1; i<= 40 ; i++) 
{ 
    Scanner s[i] = new Scanner(new FileReader("file/path//t[i].txt")); 
    while (s[i].hasNext()) { 
     l[i]_0.add(s[i].next()); 
     l[i]_1.add(s[i].nextInt()); 
     lines[i]++; 
    } 
    s[i].close(); 
    func1(l[i]_0,l[i]_1,lines[i]); 
} 
+1

是的,你可以使用一個循環。 [爲什麼「有人可以幫助我?」不是一個真正的問題?](https://meta.stackoverflow.com/questions/284236/why-is-can-someone-help-me-not-an-actual-question ) – tnw

+1

請注意,數組是**零索引**,並且不需要掃描程序數組 –

+0

作爲新的Java程序員,您應該遵循以下Java約定,包括命名變量。它應該是'file1Lines'或類似的,而不是'l1_0'。 (例如,沒有蛇的情況下,描述性的名字等) –

回答

1

如果我理解正確,您希望循環數據40次。每個文件一次。

for (int i=0; i< 40 ; i++) 
{ 
    // Initializers for this one file 
    List<String> strings = new ArrayList<>(); 
    List<Integer> nums = new ArrayList<>(); 
    int lineCount = 0; 

    String filename = "t" + i; 

    try (Scanner s = new Scanner(new FileReader("file/path/" + filename + ".txt"))) { 

     while (s.hasNext()) { 
      strings.add(s.next()); 
      if (s.hasNextInt()) { 
       nums.add(s.nextInt()); 
      } 
      lineCount++; 
     } 
    } 

    func1(strings,nums,lineCount); 
} 
+1

由於用戶是Java的新用戶,因此我建議通過try/finally或try-with-resources關閉輸入流來展示最佳實踐。 –

+0

謝謝@ cricket_007 ..它工作:)我意識到這是一個愚蠢的問題! – Chid

0
for (int i=1; i<= 40 ; i++){ 
    Scanner s[i] = new Scanner(new FileReader("file/path//t[i].txt")); 
} 

在java中沒有隱含String圖案分辨率。這意味着你必須創建自己,String表示這種新的文件名:

"file/path//t" + i + ".txt" 

或者你可以使用String.format()

String.format("file/path//t%d.txt",i) 
+0

感謝您的幫助:) – Chid