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());
        }
    }
}
4

1 回答 1

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,请确保您在currentTotalif 语句中重置回 0!

于 2013-07-17T08:06:21.333 回答