1

次のようなクラスで HashMap を作成しました。

 public static HashMap<String, String> makeMap(String file) {
  HashMap wordMap = new HashMap<String, String>();
  try {
     Scanner dictionFile = new Scanner(new FileInputStream(file));

     while(dictionFile.hasNextLine()) {
        String[] values = new String[2];
        values = dictionFile.nextLine().split(",");
        wordMap.put(values[0], values[1]);
     }
  } catch (FileNotFoundException e) {
     System.out.println("File not found!");
  } 
  return wordMap;
}    

次に、makeMao 関数を次のように呼び出します。

  HashMap dictionaryMap = Maintainance.makeMap("dictionary.txt");
  String button = e.getActionCommand();
  String homeUrl = "http://www.catb.org/jargon/html/";
  String glossUrl = "http://www.catb.org/jargon/html/go01.html";
  String searchedValue;
  String completeUrl;
  URL searchedUrl;
  String msgPart1 = "The word you are searching for cannot be found. ";
  String msgPart2 = "You are being rerouted to the glossary.";
  String message = msgPart1 + msgPart2;
  String title = "word Not Found";
  if (button == "Search") {
     String searchKey = textField.getText();
     searchedValue = dictionaryMap.get(searchKey);

なぜそれが私にエラーを与えているのか理解できません:互換性のないタイプは、searchedValue ステートメント内の searchKey 変数を指しています。required は String で、found は Object です。

4

1 に答える 1

1
if (button == "Search") 

上記のコードでは間違っていますが、Java String では次のように比較されます

if(button.equals("Search")) 

参照

カーストマップを入力する必要があります

HashMap wordMap = new HashMap();

   Map<Object,Object> wordMap =new HashMap<Object,Object>();

今あなたのコードで

     String searchKey = textField.getText();
     searchedValue = dictionaryMap.get(searchKey);

あなたの辞書マップはオブジェクトを返していると思いますが、それを文字列に設定しています。最初にオブジェクトを文字列に変換する必要があります。

于 2013-07-14T15:01:47.833 に答える