2012-08-08 283 views
0

我已经写出了以下代码,我的目标是在提示符处输入一个字符串,并返回包含此字符串的列表中的任何单词。我想我只是缺少一些小东西,当我运行程序时,它会打印整个单词列表。任何帮助,将不胜感激。使用indexOf来搜索包含某些字母的字符串

package assignment1; 

import java.net.*; 
import java.util.ArrayList; 
import java.util.List; 
import java.io.*; 

public class URLReader { 
static List<String> words = new ArrayList<String>(); 

public static void main(String[] args) throws Exception { 
    System.out.println("Please Input A String"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String letters = br.readLine(); 
    URL oracle = new URL("http://dl.dropbox.com/u/18678304/2011/BSc2/words.txt"); 
    BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream())); 
    String inputLine; 

    while ((inputLine = in.readLine()) != null) 
     words.add(inputLine); 
     in.close(); 

for(int i = 0; i<words.size(); i++) 
{ 
    if(words.get(i).indexOf(letters) >= 0); 
     System.out.println(words.get(i)); 
} 

} 
} 
+1

我瘦k您需要编辑此代码。你的if语句后面有一个分号,可以尽早终止。 – BlackVegetable 2012-08-08 15:48:02

回答

2

你在你的if语句的结束有;

if(words.get(i).indexOf(letters) >= 0); 
    System.out.println(words.get(i)); 

它应该是:

if(words.get(i).indexOf(letters) >= 0) 
    System.out.println(words.get(i)); 
+0

傻了,非常感谢。 – 2012-08-08 15:53:51

+1

@TimmjyMorrissey你应该在这里真的使用'String.contains'。 – oldrinb 2012-08-08 15:54:28

2

括号{}不需要一个声明,但它的安全始终使用:

if(words.get(i).indexOf(letters) >= 0){ 
System.out.println(words.get(i)); 
} 
+1

是的,但是如果他总是在代码中使用大括号,应该避免这个问题。 – 2012-08-08 16:06:59