2017-10-09 37 views
0

我目前正在研究一种方法,它将输出到列表中的所有主题代码包含用户输入的字符串。例如,我的ArrayList有4本书,其中有两个字段:name,subjectCode。目前,该方法的输出返回// True,False,False,True等。我如何配置它,以便显示所有True值的subjectCode,例如。 COMM100,COMM200当输入s = COM时输出打印布尔代替字符串

private static void findSubjectCodes(ArrayList<Subject2> list, String s) { 
    System.out.println("Subject codes found:"); 

    for (int i = 0; i < list.size(); i++) 
    System.out.println(list.get(i).subjectCode.contains(s) + "\n"); 

     // True, False, True, etc 

} 
+1

使用IF语句,如'contains'返回一个布尔值。 – Compass

+0

请阅读如何创建[mcve],然后相应地编辑您的问题。同时,['contains()'](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#contains(java.lang.CharSequence))确实会返回一个布尔值。 – domsson

回答

0

返回类型.contains(*)是布尔值,这就是为什么你得到布尔值作为输出。

它基本上检查该属性是否包含接收到的文本,因此list.get(i).subjectCode.contains(s)正在打印一个布尔值。

要打印,你需要做这样的事情的主题代码:

for (int i = 0; i < list.size(); i++){ 
     if(list.get(i).subjectCode.contains(s)) 
     { 
      System.out.println("Subject is found:" +list.get(i).subjectCode); 
     } 
     else{ 
      System.out.println("Subject not found."); 
     } 
    } 

下面是官方文档:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html

+0

感谢您的帮助和解释。 –

3

将您的contains条件放入条件分支中。例如

for (int i = 0; i < list.size(); i++) { 
    String subjectCode = list.get(i); 
    if (subjectCode.contains(s) { 
      System.out.prinltn(subjectCode + "\n"); 
     } 
    } 
+0

谢谢你的帮助。 –