0

我正在尝试了解如何为我正在尝试的项目搜索某些关键字。我正在使用由其他人创建的程序,并尝试对其进行修改以接受两个参数。到目前为止,我一直试图在“搜索”+ args[0] 之后添加 args[1],希望它会搜索第二个参数,但是这没有奏效,并导致程序报告该位置是在 -第 2 行的第 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());
    }
}

}

4

1 回答 1

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

}

我不确定这是否有效,可能不是,但我只是在脑海中写下这个(未经测试)。

于 2012-05-30T14:41:55.373 回答