2016-09-01 3 views
-1

私はStudents(オブジェクト)をarrayListに追加しています。コードの冒頭に、 students + studentnumbersが空白になるまで。彼らが空白に入ったら、私のプログラムはすべての学生とその学生番号をプリントアウトします。生徒とその番号を印刷したら、ユーザーに検索語を提示するように求められます。次に、検索語を使ったすべての生徒がプリントアウトされます。私のコードですべてが私のArrayListArrayListの一部である文字列に部分文字列があるかどうかを確認する方法

内の文字列で検索語を比較するから離れて働くこれは私がこれまでに思い付いたものです:

import java.util.ArrayList; 
import java.util.Scanner; 

public class Main { 
    public static void main(String[] args) { 
    Scanner reader = new Scanner(System.in);  
    ArrayList<Student> students = new ArrayList<Student>(); 
     System.out.print("name: "); 
     String name = reader.nextLine(); 
     while (!name.equals("")) { 

      System.out.print("studentnumber: "); 
      String studentNumber = reader.nextLine(); 
      students.add(new Student(name, studentNumber)); 
      System.out.print("name: "); 
      name = reader.nextLine(); 
     } 
     for (Student prs : students) { 
      System.out.println(prs); 
     } 

     System.out.println("Give search term: "); 
     String searchTerm = reader.nextLine(); 
     System.out.println("Result: "); 

     for (Student prs : students) { 
      if (prs.contains(searchTerm)) { 
       System.out.println(prs); 
      } 
     } 
    } 
} 

は、だから私の質問は、私は、コードの行を修正することができる方法である

for (Student prs : students) { 
    if (prs.contains(searchTerm)) { 
     System.out.println(prs); 
    } 
} 

ありがとうございました。

+0

このコードは何を*印刷するべきですか?代わりに何を印刷しますか? –

+1

'Student'クラスのメソッドを公開して、検索する必要があるフィールドbaedを返します。そしてそれに 'contains()'を使用してください。 – TheLostMind

答えて

0

だけ含むカスタムにそれを見て、このように他のコードを変更する必要があなたの学生のクラスを変更しない

for (Student prs : students) { 
    if (prs.toString().contains(searchTerm)) { 
     System.out.println(prs); 
} 
+0

はい、これは動作します。ありがとう!なぜ私はprsの値をStringsに変換しなければならないのかについて少し詳しく説明できますか?私のコードにはどういうことが起こっていますか?すでに学生の弦の値を教えてください。 – Zariadres

+0

その質問に答えるために、私はあなたのStudentクラスのcontainsメソッドを見る必要があります。 – uoyilmaz

1

for (Student prs : students) { 
    if (prs.contains(searchTerm)) { 
     System.out.println(prs); 
} 

を変更、あなたが適切StudentクラスのtoStringメソッドをオーバーライドと仮定すると、方法

package com.tried; 

public class Student { 

    String name; 

    String studentNumber; 

    public Student(String name2, String studentNumber) { 

     this.name=name2; 
     this.studentNumber=studentNumber; 
     // TODO Auto-generated constructor stub 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getStudentNumber() { 
     return studentNumber; 
    } 

    public void setStudentNumber(String studentNumber) { 
     this.studentNumber = studentNumber; 
    } 

    public boolean contains(String term){ 
     System.out.println(this.studentNumber+"and"+this.name); 
     if(this.studentNumber.contains(term) || this.name.contains(term)){ 

      return true; 
     } 

     return false; 
    } 

    @Override 
    public String toString() { 
     return "Student [name=" + name + ", studentNumber=" + studentNumber + "]"; 
    } 




} 
+0

これは本当にきれいなOOソリューションです。ありがとう。 –

関連する問題