将用户输入与文件内容与Java进行比较

时间:2012-02-08 20:47:24

标签: java

我想写一个java代码,它读取一个有很多句子的文件,例如 -

Hey how you doing?
Hi I am fine.
Hello World, Good Morning!

要求用户输入第一个单词作为输入,输出应该是句子的其余部分。例如,如果输入的单词是“Hi”,那么输出应该是“我很好”。这是我下面的代码,我不知道是什么问题!真的需要你的帮助!谢谢!

import java.io.*;  
import java.util.*;  
import java.io.FileReader;
import java.io.BufferedReader;

public class FileContents {  
  public static void main(String args[]) {   
    BufferedReader br=new BufferedReader(new FileReader("myfile.txt"));  
    Vector lineArray=new Vector();  
    String lineContents=null;  
    int counter=0,i; 

    try {  
      while ((lineContents=br.readLine())!=null) {  
        lineArray.add(lineContents);  
        counter++;  
      }  
    } catch (FileNotFoundException fne) {  
      fne.printStackTrace();  
    } catch (IOException io) {  
      io.printStackTrace();  
    }  

    Scanner input = new Scanner(System.in);

    int no=3;
    String[] textData=new String[no];
    for (i=0;i<no;i++) {
      textData[i]=br.readLine();
    }
    br.close();

    System.out.println("These are the file contents : ");
    for (i=0;i<lineArray.size();i++) {  
      System.out.println(lineArray.get(i));  
    }  


    System.out.println("\n Enter first word of sentence : ");
    String st = input.nextLine();
    String[] word= st.split(" ");

    System.out.println("\n Rest of the sentence is  :  ");

    for (i=0;i<lineArray.size();i++) {  
      if (word[i].equals(textData[i])) {
        while (word[i]!='\n')
          System.out.println(word[i]);
      }
    }
  }
}

我是初学者,所以请原谅我的错误。

以上代码输出 - 没有!没有错误,但没有输出!!

2 个答案:

答案 0 :(得分:0)

我无法理解你在上面的代码中想要做什么(可能是我的大脑因缺乏睡眠而无法运作)但你可以做到以下几点:

  1. 获取用户输入并将其存储在String input
  2. 如上所述逐行阅读文件,但使用StringTokenizer并对每行进行标记。
  3. 只需将第一个令牌与输入进行比较,看看它们是否匹配。
  4. 如果是,打印线;退出,否则转到下一行。

答案 1 :(得分:0)

您似乎已经关闭了输入,使用您的扫描仪类,您需要做的就是添加一个HashMap。

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/HashMap.html

有些事情,

<强>更新

HashMap responseMap = new HashMap();

public string genResponse(String word) {
   String response = (String) responseMap.get(word);
   if (response != null){
      return response;
   } else {
      return "Word unrecognized!" 
   }
}

您需要使用回复填充回复地图。

更新2

这就是我重新构建你的课程的方法,我省略了代码,因为这是你的作业。

public class FileContents {

    public HashMap responseMap = new HashMap();
    public Vector lineArray = new Vector();

    public static void main(String args[]){
        //Call function to populate the map
        populateResponseMap();
        //Read the lines        
        readLines();
    }

    public void populateResponseMap(){
        //This is where you would add responses, something like
        responseMap.put("Hi", "I am fine");
    }

    public void readLines() {

        //This is where you would read the data from the file using you scanner class

        //With each line you would call this function 
        genResponse(//first word in line );
    }

    public String genResponse(String word) {
        String response = (String) responseMap.get(word);
        if (response != null) {
            return response;
        } else {
            return "Word unrecognized!";
        }
    }
}

希望这有帮助