在这个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());
}
}
}
答案 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条记录,但在这种情况下其他答案可能更快。