我正在尝试了解为我正在尝试的项目搜索某些关键字。我正在使用由其他人创建的程序,我试图修改它以接受两个参数。到目前为止,我试图在“搜索”+ args [0]之后添加args [1],希望它会搜索第二个参数但是这没有用,并导致程序报告该位置被发现 - 我正在阅读的文本文件显示为:
one
two
three
任何人都可以提供有关如何传递两个参数的帮助。
谢谢
// Import io so we can use file objects
import java.io.*;
public class searchfile {
public static void main(String args[]) {
try {
// Open the file c:\test.txt as a buffered reader
BufferedReader bf = new BufferedReader(new FileReader("C:/Users/Sean/Desktop/Java/MyText.txt"));
// Start a line count and declare a string to hold our current line.
int linecount = 0;
String line;
// Let the user know what we are searching for
System.out.println("Searching for " + args[0] + " in file...");
// Loop through each line, stashing the line into our line variable.
while (( line = bf.readLine()) != null)
{
// Increment the count and find the index of the word
linecount++;
int indexfound = line.indexOf(args[0]);
// If greater than -1, means we found the word
if (indexfound > -1) {
System.out.println("Word was found at position " + indexfound +" on line " + linecount);
}
}
// Close the file after done searching
bf.close();
}
catch (IOException e) {
System.out.println("IO Error Occurred: " + e.toString());
}
}
}
答案 0 :(得分:1)
// Import io so we can use file objects
import java.io.*;
public class searchfile {
public static void main(String args[]) {
try {
// Open the file c:\test.txt as a buffered reader
BufferedReader bf = new BufferedReader(new FileReader("C:/Users/Sean/Desktop/Java/MyText.txt"));
// Start a line count and declare a string to hold our current line.
int linecount = 0;
String line;
// Let the user know what we are searching for
// i.e. just printing to the console, not actually searching.
System.out.println("Searching for " + args[0] + " in file...");
// Loop through each line, stashing the line into our line variable.
while (( line = bf.readLine()) != null)
{
// Count lines. We read a line this variable (linecount) increments by one
linecount++;
// the indexOf function returns the index (i.e. the place of) the parameter, in this case args[0]. If it doesn't find the parameter, it returns -1, an impossible value, so we know it wasn't found.
// Here is the actual searching done, till...
int indexfound = line.indexOf(args[0]);
// If greater than -1, means we found the word
if (indexfound > -1) {
System.out.println("Word was found at position " + indexfound +" on line " + linecount);
}
// ...here.
}
// Close the file after done searching
bf.close();
}
catch (IOException e) {
System.out.println("IO Error Occurred: " + e.toString());
}
}
}
我在评论中说,搜索完成了。我认为你可以复制大部分内容并为args [1]再次执行此操作。
有关更多参数(不确定它是否是最佳/最快的解决方案):
// Import io so we can use file objects
import java.io.*;
public class searchfile {
public static void main(String args[]) {
try {
// Open the file c:\test.txt as a buffered reader
BufferedReader bf = new BufferedReader(new FileReader("C:/Users/Sean/Desktop/Java/MyText.txt"));
// Start a line count and declare a string to hold our current line.
int linecount = 0;
String line;
// Let the user know what we are searching for
// i.e. just printing to the console, not actually searching.
System.out.println("Searching for " + args[0] + " in file...");
// Loop through each line, stashing the line into our line variable.
while (( line = bf.readLine()) != null)
{
// Count lines. We read a line this variable (linecount) increments by one
linecount++;
// the indexOf function returns the index (i.e. the place of) the parameter, in this case args[0]. If it doesn't find the parameter, it returns -1, an impossible value, so we know it wasn't found.
// Here is the actual searching done, till...
for(int index = 0; true; index++) {
try {
int indexfound = line.indexOf(args[index]);
// If greater than -1, means we found the word
if (indexfound > -1) {
System.out.println("Word was found at position " + indexfound +" on line " + linecount);
}
}
catch(ArrayIndexOutOfBoundsException ex) {
break;
}
// ...here.
}
}
// Close the file after done searching
bf.close();
}
catch (IOException e) {
System.out.println("IO Error Occurred: " + e.toString());
}
}
}
我不确定这是否有效,可能不是,但我只是从头脑中写出来(未经测试)。