2011-06-05 52 views
0

我正在尝试取文本字段的值,并将其应用于方法以便为该值搜索文本文件。但在我的方法中,我显示一个丢失的返回值错误,似乎无法使其工作。下面是我的代码:遗失退货声明

 submitsearch.addActionListener(new ActionListener() 
     { 
     public void actionPerformed(ActionEvent e) 
     { 

      whatToSearch = searchfield.getText(); 
       result = SearchString(whatToSearch); 




     } 
    }); 
} 

public String SearchString(String result) 
{ 
    String input; 

    try{ 
     String details, id, line; 
     int count; 
     Scanner housenumber = new Scanner(new File("writeto.txt")); 
     while(housenumber.hasNext()) 
     { 
      id = housenumber.next(); 
      line = housenumber.nextLine(); 
      { 

       if(!housenumber.hasNext()) 
       JOptionPane.showMessageDialog(null,"No Properties with this criteria"); 
      } 

      if(result.equals(id)); 
      { 
       JOptionPane.showMessageDialog(null,id + line); 
      } 

     } 
    } 

    catch(IOException e) 
    { 
     System.out.print("File failure"); 
     } 
    } 
} 

附录:

在SearchString在我希望搜索我的文本文件在一个JOptionPane的显示在我的文本框输入的值。虽然我现在有return语句,当我点击搜索我被一个,无论它们是否匹配我的搜索

+0

您的'SearchString'方法不会在任何地方返回一个值,但您已指定它应该返回一个'String'。 – 2011-06-05 16:38:57

+1

真正的问题是,它不清楚你在'SearchString'中试图完成什么。也许如果你描述输入和期望的结果,你可以得到一个有用的答案。 – 2011-06-05 16:39:44

+0

在SearchString我希望能够搜索我的文本文件输入在我的文本字段中的值显示它在一个JOptionPane。虽然我现在有返回声明,当我点击搜索时,我会在JOptionPanes中逐一显示所有记录,无论它们是否与我的搜索匹配。 – 2011-06-05 16:44:58

回答

3

在catch块后添加return null;

方法签名说它返回一个字符串。这意味着无论您的代码需要什么流程,该方法都应该返回一个值。但是,当发生异常时,不会有任何回报。因此,您必须在发生异常时指定返回值

6

您已声明与String返回类型的功能中显示的所有记录在JOptionPanes之一,因此它必须返回所有代码路径上的String。如果您不需要返回任何内容,请改用void

+0

我只是想强调**所有代码路径**部分。因为你有一个try-catch结构并且不在catch块中抛出异常,所以这被认为是不同的路径。当你添加你的return语句时,或者把它放在try-catch块之外(首选),或者如果你在你的try块中放入一个return,你也需要在你的catch块中使用一个。 – 2011-06-05 17:08:32