0

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

5 回答 5

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++;
    }
于 2013-07-17T07:17:40.917 回答
1

只需使用计数器变量

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

  counter++;
}
于 2013-07-17T06:59:25.110 回答
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();
        }
于 2013-07-17T07:07:11.880 回答
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());
        }
    }
}
于 2013-07-17T07:01:29.510 回答
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 条记录,尽管在这种情况下其他答案可能更快。

于 2013-07-17T07:05:42.073 回答