如何使用java搜索json文件中的任何单词

时间:2017-06-06 09:04:05

标签: java json

我的目标是编写一个函数(Ri),它返回包含json文件中的术语i的行数,因为我通过查找我初始化的单词开始,但后来我不知道如何概括。 这是我的开始代码:

public class rit {
private static final String filePath = "D:\\c4\\11\\test.json"; 
    public static void main(String[] args) throws FileNotFoundException, ParseException, IOException {
        try{
             InputStream ips=new FileInputStream(filePath);
             InputStreamReader ipsr=new InputStreamReader(ips);
             BufferedReader br=new BufferedReader(ipsr);
             String ligne;
                 String mot="feel";
                 int i=1;
                // nombre de lignes  totales contenant le terme
                int nbre=0; 
             while ((ligne=br.readLine())!=null){

          try {
            // read the json file
                JSONParser jsonParser = new JSONParser();
            JSONObject jsonObject = (JSONObject) jsonParser.parse(ligne);

               // get a number from the JSON object
            String text =  (String) jsonObject.get("text");

                        if ( text.contains(mot)){
                        nbre++;
                        System.out.println("Mot trouvé a la ligne " + i );
                        i++;

                        }   

        } catch (ParseException ex) {
            ex.printStackTrace();
        } catch (NullPointerException ex) {
            ex.printStackTrace();
        }}

               System.out.println("number of lines Which contain the term: " +nbre);
    br.close();
 }    
 catch (Exception e){
    System.out.println(e.toString());
 }}}

输出是:

Mot trouvé a la ligne 1
Mot trouvé a la ligne 2
number of lines Which contain the term: 2

如果可以概括,怎么做?

1 个答案:

答案 0 :(得分:0)

String args[]中的public static void main(String[] args)是输入参数。因此,要运行java rit.class feelargs将为[feel]

你可以让你的程序在那些输入参数中期望word(甚至filePath):

public static void main(String[] args) {
    if(args.length != 2){
        // crash the application with an error message
        throw new IllegalArgumentException("Please enter $filePath and $wordToFind as input parameters");
    }
    String filePath = args[0];
    String mot = args[1];
    System.out.println("filePath : "+filePath);
    System.out.println("mot : "+mot);
}

另一种方法是等待用户输入。它很整洁,因为你可以将它包装在循环中并重复使用它:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in); // used for scanning user input
    while(true){
        System.out.println("please enter a word : ");
        String mot = scanner.nextLine();  // wait for user to input a word and enter
        System.out.println("mot is : "+mot);
    }
}