Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将单词存储到Hashmap中_Java_Servlets_Hashmap - Fatal编程技术网

Java 将单词存储到Hashmap中

Java 将单词存储到Hashmap中,java,servlets,hashmap,Java,Servlets,Hashmap,我试图解析一个文本文件,并将第一个单词存储为HashMap的键,将其余单词存储为其值。我试图做的是创建一种翻译器,用户在其中输入一个英文单词(键),然后返回值(西班牙语翻译,可能不止一个单词)。下面是文本文件的一个示例(注意:我也不能存储以字符“#”开头的行中的字符串): ########################################################################### #版权所有1999互联网词典项目/泰勒·钱伯斯 #############

我试图解析一个文本文件,并将第一个单词存储为HashMap的键,将其余单词存储为其值。我试图做的是创建一种翻译器,用户在其中输入一个英文单词(键),然后返回值(西班牙语翻译,可能不止一个单词)。下面是文本文件的一个示例(注意:我也不能存储以字符“#”开头的行中的字符串):

###########################################################################
#版权所有1999互联网词典项目/泰勒·钱伯斯
###########################################################################
联合国,联合国,联合国[文章]
奥德瓦克塞尔多霍米盖罗
aardvark oso hormiguero[名词]
土豚cerdos hormigueros
土豚
ab prefijo que indica separacio/n
阿巴克·哈西娅·阿特拉斯
更新:我已经将代码更新到目前为止的状态。我很接近。我遇到的一个问题是处理有多个西班牙语翻译的(英语)单词。我遇到的问题是如何处理这些键和值。当一个单词有多个翻译时,我希望发生如下情况: 输出: 中文:土豚 西班牙语:1.cerdo hormiguero 奥索·霍米盖罗[名词]

我遇到的另一个问题是,当用户输入一个未翻译的单词时,会显示一条消息说它无法翻译。我曾经 if(request.getParameter(“inputtext”)!=null) 检查但不起作用。任何帮助都将不胜感激! 包装lab1

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/Translate")
public class Translate extends HttpServlet {
private static final long serialVersionUID = 1L;
public static String realPath;
private BufferedReader reader;
public HashMap<String, String> lists = new HashMap<String, String>();

public Translate() {
    super();
    // TODO Auto-generated constructor stub
}

public void init(ServletConfig config) throws ServletException {
        super.init(config);
    realPath = this.getServletContext().getRealPath("/WEB-INF/Spanish.txt");
    File file = new File(realPath);
    try {
        reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "ISO8859-1"));
        String line = null;
        StringBuilder rslt = new StringBuilder();
        if(reader != null){
            while ((line = reader.readLine()) != null) {
                if ((line.length()>0)&&(line.charAt(0) != '#')){
                    String [] tokens = line.split("\\s", 2);
                    if (lists.containsKey(tokens[0])) {
                        //handle the duplicates
                   } else {
                       lists.put(tokens[0].replaceAll("\\s",""), line.substring(tokens[0].length()).trim());
                   }
                }
            }
            Iterator iterator = lists.keySet().iterator();  
            while (iterator.hasNext()) {  
               String key = iterator.next().toString();  
               String value = lists.get(key).toString();  

               //System.out.println("KEY: " + key + " \nVALUE:" + value);  
            }
        }
            //System.out.println(rslt.toString());
    } catch (FileNotFoundException e) {
        System.out.println("Blah1");
        e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head><title>English to Spanish Translator</title>");
    out.println("<style>h1,h2,form,p{text-align:center;color:white}body{background-color:black;}</style></head>");
    out.println("<body>");
    out.println("<h1>Welcome to the Online Translator</h1>");
    out.println("<h2>Please Enter a Word in English:</h2>");
    out.println("<form method='post'><input id='inputtext' name='inputtext'></inputText><input type='submit' value='Translate' name='submit'></input></form>");
    out.println("</body></html>");
    out.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    String value = (String) lists.get(request.getParameter("inputtext"));
    if (request.getParameter("submit") != null) {
        if(request.getParameter("inputtext") != null){
                // word is found
                out.println("<html>");
            out.println("<head><title>English to Spanish Translator</title>");
            out.println("<style>h1,h2,p{text-align:center;color:white}body{background-color:black;}</style></head>");
            out.println("<body>");
            out.println("<h1>Here is your Translation of the word: " + request.getParameter("inputtext") + "</h1>");
            out.println("<h2>" + value + "</h2>");
            out.println("<p><a href='./Translate'>Translate Another Word</a></p>");
            out.println("</body></html>");
            out.close();
        } else if(request.getParameter("inputtext") == null){
            // word is not in translator
            out.println("<html>");
            out.println("<head><title>English to Spanish Translator</title></head>");
            out.println("<body>");
            out.println("<h1>The Word " + request.getParameter("inputtext") + " is     not in the translation</h1>");
            out.println("<p><a href='./Translate'>Translate Another Word</a></p>");
            out.println("</body></html>");
            out.close();
        }
        }
    }

}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.PrintWriter;
导入java.io.UnsupportedEncodingException;
导入java.util.HashMap;
导入java.util.Iterator;
导入javax.servlet.ServletConfig;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
@WebServlet(“/Translate”)
公共类转换扩展HttpServlet{
私有静态最终长serialVersionUID=1L;
公共静态字符串realPath;
专用缓冲读卡器;
public HashMap list=new HashMap();
公共翻译{
超级();
//TODO自动生成的构造函数存根
}
public void init(ServletConfig config)抛出ServletException{
super.init(config);
realPath=this.getServletContext().getRealPath(“/WEB-INF/Spanish.txt”);
File File=新文件(realPath);
试一试{
reader=新的BufferedReader(新的InputStreamReader(新文件InputStream(文件),“ISO8859-1”);
字符串行=null;
StringBuilder rslt=新的StringBuilder();
if(读卡器!=null){
而((line=reader.readLine())!=null){
if((line.length()>0)和&(line.charAt(0)!='#')){
String[]tokens=line.split(“\\s”,2);
if(lists.containsKey(令牌[0])){
//处理副本
}否则{
lists.put(标记[0].replaceAll(“\\s”,”)、line.substring(标记[0].length()).trim());
}
}
}
迭代器迭代器=lists.keySet().Iterator();
while(iterator.hasNext()){
字符串键=迭代器.next().toString();
字符串值=lists.get(key).toString();
//System.out.println(“键:“+KEY+”\n值:“+value”);
}
}
//System.out.println(rslt.toString());
}catch(filenotfounde异常){
System.out.println(“Blah1”);
e、 printStackTrace();
}捕获(不支持的编码异常e){
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
PrintWriter out=response.getWriter();
out.println(“”);
out.println(“英语到西班牙语翻译”);
println(“h1,h2,form,p{text align:center;color:white}body{background color:black;}”);
out.println(“”);
println(“欢迎使用在线翻译”);
out.println(“请用英语输入一个单词:”);
out.println(“”);
out.println(“”);
out.close();
}
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
PrintWriter out=response.getWriter();
字符串值=(字符串)lists.get(request.getParameter(“inputtext”);
if(request.getParameter(“submit”)!=null){
if(request.getParameter(“inputtext”)!=null){
//找到了这个词
out.println(“”);
out.println(“英语到西班牙语翻译”);
println(“h1,h2,p{text align:center;color:white}body{background color:black;}”);
out.println(“”);
println(“这是您对以下单词的翻译:”+request.getParameter(“inputtext”)+”);
out.println(“+value+”);
out.println(“

”); out.println(“”); out.close(); }else if(request.getParameter(“inputtext”)==null){ //单词不在翻译中 out.println(“”); out.println(“英语到西班牙语翻译”); out.println(“”); out.println(“翻译中没有“+request.getParameter”(“inputtext”)+”一词); out.println(“

”); out.println(“”); out.close(); } } } }
首先,您正在使用
=以比较字符串。这是一个大禁忌。使用
!string.equals(otherString)

==    if(reader != null){
        while ((line = reader.readLine()) != null) {
            if ((line.length()>0)&&(line.charAt(0) != '#')){
                String[] tokens = line.split("\\s+", 2);
                lists.put(tokens[0], tokens[1]);
            }
        }

        Iterator iterator = lists.keySet().iterator();  

        while (iterator.hasNext()) {  
           String key = iterator.next().toString();  
           String value = lists.get(key).toString();  

           System.out.println("KEY: " +key + " VALUE:" + value);  
        }
    }
  if ((line.length()>0)&&(line.charAt(0) != '#')){
      String[] tokens = line.split("\\s+", 2);
      if (lists.containsKey(tokens[0]) {
           //handle the duplicates
      } else {
          lists.put(tokens[0], tokens[1]);
      }
  }