2016-09-01 3 views
-1

Also füge ich Students (die Objekte sind) zu meiner ArrayList hinzu und am Anfang des Codes lasse ich den Benutzer so viele addieren Studenten + Studentenzahlen, bis sie leer sind. Sobald sie leer sind, druckt mein Programm alle Schüler und ihre Studentennummer aus. Sobald die Studenten und ihre Nummer ausgedruckt sind, wird der Benutzer gebeten, einen Suchbegriff einzugeben. Dann druckt das Programm alle Schüler aus, die den Suchbegriff angegeben haben. Alles in meinem Code funktioniert abgesehen von dem Vergleich des Suchbegriffs mit den Saiten in meinem ArrayListWie überprüft man, ob ein Teilstring in einem String vorhanden ist, der Teil einer ArrayList ist

Dies ist, was ich mit so weit kam:

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); 
      } 
     } 
    } 
} 

Also meine Frage ist, wie ich die Codezeile beheben

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

, damit es funktioniert.

Vielen Dank für Ihre Unterstützung.

+0

Was * sollte * dieser Code drucken, und was wird stattdessen gedruckt? –

+1

Zeigen Sie eine Methode in Ihrer Student-Klasse an, um das Feld zurückzugeben, auf dem Sie suchen müssen. Und benutze 'contains()' darauf – TheLostMind

Antwort

0

Angenommen Sie haben die toString Methode der Klasse Student richtig overrode, ändern

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

mit

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

Ja, das funktioniert. Vielen Dank! Kannst du bitte ein wenig darüber nachdenken, warum ich die Werte von PRS zu Strings verdecken muss? Was genau passiert mit meinem Code? Arent die Werte in Student bereits Strings? – Zariadres

+0

Um diese Frage zu beantworten, muss ich die contains-Methode Ihrer Student-Klasse sehen. – uoyilmaz

1

Studenten Klasse dieses ändern wie keine Notwendigkeit, einen anderen Code zu ändern, suchen Sie einfach in kundenspezifische enthält Methode

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

Dies ist wirklich die schöne und OO-Lösung. Vielen Dank. –

Verwandte Themen