如何添加行值

时间:2013-07-17 06:55:48

标签: java

在这个java代码中我试图从read.txt文件中读取每一行,但是如果我传递一个参数,我想得到行号

例如: - read.txt包含

2
2
4
5
6
7
7
8
8
9

我正在传递参数9

然后程序应该返回第10行

因为我给出的值作为参数出现在第10行  我怎么能这样做?

这是我尝试过的 Java代码:

import java.io.*;

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

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

5 个答案:

答案 0 :(得分:1)

只需使用计数器变量

int counter=0;
while ((strLine = br.readLine()) != null)   
{
  if(counter==param2)
    System.out.println (strLine);

  counter++;
}

答案 1 :(得分:1)

import java.io.*;

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

    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){ 
                   //print the i i.e line number
                }
            }
            in.close();
        }
        catch (Exception e)
        {
            System.err.println("Error: " + e.getMessage());
        }
    }
}

答案 2 :(得分:1)

你需要使用计数器。

try
        {
            FileInputStream fstream = new FileInputStream(filename);
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine;
            int cnt=1;
            while ((strLine = br.readLine()) != null)   
            {
              if(strLine.contain(Integer.toString(param2)))  
                {                   
                System.out.println (strLine + "is present at line no "+ cnt);
                }
                cnt++;
            }
            in.close();
        }

答案 3 :(得分:1)

你也可以尝试一下。

    Scanner sc=new Scanner(new FileReader("D:\\read.txt"));
    int val=1;
    while (sc.hasNext()){
        if(sc.next().equals("9")){
            System.out.println("Line number "+val);
        }
        val++;
    }

答案 4 :(得分:0)

您可以使用列表来保存int值。这看起来像是:

public static ArrayList<int> setForSum(String filename,int param2) {
    try {
        FileInputStream fstream = new FileInputStream(filename);
        BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
        String strLine;

        ArrayList<int> numberList = new ArrayList<int>();            

        while ((strLine = br.readLine()) != null) {
            try {
                if (Integer.parseInt(strLine) == param2) {
                    numberList.add(Integer.parseInt(strLine));
                }
                //break;
            } catch (Exception e) {}
        }
        in.close();
        return numberList;
    }

使用这种方式可以从文件中获取多个结果。如果取消注释中断,它只能使用1条记录,但在这种情况下其他答案可能更快。