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);

THENcurrentTotalステートメントで使用します。

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

Heuster前述のように、if ステートメント内で 0 にリセットしていることを確認してくださいcurrentTotal

于 2013-07-17T08:06:21.333 に答える