2013-07-17 70 views
0

我正在嘗試讀取txt文件並添加行值,即我將參數傳遞給java代碼。它應該打印附加值的行號如何計算文件中的行值?

我傳遞文件名和int值給java程序。

爲前:read.txt包含

2 
2 
3 
4 
4 
6 
7 
7 
8 
8 
9 
0 

現在我傳遞的參數爲5,所以它應該加起來行和打印行數,它應該打印的行號,如果總和> = 5

爲前 2+2+3 = 7 is > 5 因爲最後的數字加起來是3,它是在3號線 所以它應該打印3號線

4+4 = 8 is > 5 所以它應該打印3號線

6 is > 5 所以它應該打印行數6 由於其行號6

等.. 我怎樣才能做到這一點?

這裏就是我試圖

代碼:

import java.io.*; 

class CountR 
{ 
    public static void main(String args[]) 
    { 
     setForSum("read.txt",3); 
    } 

    public static void setForSum(String filename,int param2) 
    { 
     try 
     { 
      FileInputStream fstream = new FileInputStream(filename); 
      BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); 
      String strLine; 
      int i = 0; 
      while ((strLine = br.readLine()) != null) 
      { 
       i++; 
       if(param2 == Integer.parseInt(strLine)) 
       { 
        System.out.println(i); 
       } 
      } 
      in.close(); 
     } 
     catch (Exception e) 
     { 
      System.err.println("Error: " + e.getMessage()); 
     } 
    } 
} 
+0

你的代碼是否工作 - 如果不是這樣做是錯誤的? – DaveRlz

+0

此代碼有效,但現在只打印給定號碼所在的行號...... 即。給定的數字是3,它顯示行號3,因爲它位於行號3中。 –

回答

1

我注意到的第一件事,這是if statement只會如果你的土地上你指定數量的工作,準確。

if(param2 == Integer.parseInt(strLine)) 
{ 
     System.out.println(i); 
} 

應該是:

if(param2 >= Integer.parseInt(strLine)) 
{ 
     System.out.println(i); 
} 

其次,你不是總金額高達價值觀,是嗎?你只是讀取每個值,所以在循環外部聲明一些值:

int currentTotal = 0; 

然後在循環:

currentTotal += Integer.valueOf(strLine); 

在聲明中,然後使用currentTotal

if(currentTotal >= Integer.parseInt(strLine)) 
{ 
    System.out.println("Line Number " + i); 
} 

正如Heuster提到的那樣,請確保您在if語句中將currentTotal重置爲0!

+0

並在您的'if'中重置'currentTotal' :) –

+0

在問題的末尾添加了一點:) – christopher