2016-04-10 5 views
0

私はllと呼ばれるオブジェクトを持つリンクリストを持っています。私のオブジェクトは生徒と呼ばれ、名前、学年、年齢があります。私は、学生の名前に基づいてfindメソッドを作成したいと思います。リンクされたリストのメソッドを見つける

import java.util.LinkedList; 
import java.util.Scanner; 

public class Course { 
    LinkedList<Object> ll = new LinkedList<Object>(); 
    Scanner s = new Scanner(System.in); 

    public void addStudent() { 
     p("Enter the name that you want"); 
     String f = s.nextLine(); 
     Student a = new Student(f); 
     ll.add(a); 
    } 

    public void changeName() {       //this method is to change the name of a student 
     Student student = findStudent(); 
     p("Enter the name that you want"); 
     String newName = s.nextLine(); 
     Student.setName(newName); 
    } 

    public void setGrade() {     //this method is to put the student's grade 
     Student student = findStudent(); 
     p("Enter the grade that you want"); 
     int grade = s.nextInt(); 
     Student.setGrade(grade); 
    } 

    public void setAge() {     //This method is to put the student's grade 
     Student student = findStudent(); 
     p("Enter the age that you want"); 
     int age = s.nextInt(); 
     Student.setAge(age); 
    } 

    public Student findStudent(){ 
     p("Which student do you want to change? Please enter their name:"); 
     String name = s.nextLine(); 
     boolean a=false; 
     for (int e=0; e<ll.size(); e++) { 
      if (name.equals(ll(e).name)) { 
       p("Found the student"); 
       break; 
       return e; 
       //Find student in the list - left for the author 
      } else { 
       a=true; 
      } 
     } 
     if (a) { 
      p("Student is not in the list"); 
      Student student = null; 
      return student;} 
    } 

    public String show() { 
     if (ll!=null) { 
      for (int i=0; i<ll.size(); i++) { 
       return "Student(name:" + name + ", age:" + age + ", grade:" + grade + ")"; 
      } 
     } else {return "There are no students in the list"; 
     } 
    } 
    //------------------------------------------------------------------------- 
    public void p(String x) { 
     System.out.println(x); 
    } 

    public static void main(String[] args) { 
     p("What do you want to do?"); 
     Course course = new Course(); 
     p("To add a student press 1"); 
     p("To change the name of a student press 2"); 
     p("To set the grade for a student press 3"); 
     p("To set the age of a student press 4"); 
     p("To find a student press 5"); 
     p("To show the students press 6"); 
     p("To get the age of a student press 7"); 
     p("To get the grade of a student press 8"); 
     int a = s.nextInt(); 
     if (a==1) { 
      addStudent(); 
     } else if (a==2) { 
      changeName(); 
     }else if (a==3) { 
      setGrade(); 
     }else if (a==4) { 
      setAge(); 
     } else if (a==5) { 
      findStudent(); 
     }else if (a==6) { 
      show(); 
     } else if (a==7) { 
      getAge(); 
     } else if (a==8) { 
      getGrade(); 
     } 
     new Course(); 
    } 
} 

findメソッドでは、シンボルll(int)が見つからないというメッセージが表示されます。オブジェクトのパラメータに基づいてfindメソッドを作成するにはどうすればよいですか。

+0

'場合(name.equals(LL(E).nameの)){' - > ' if(name.equals(ll.get(e).name)){'注意事項** get。** – markspace

答えて

0

リストからn番目の要素を取得するには、ll(e)の代わりにgetメソッドを使用します。ll.get(e)

一方、リストを反復処理しているので、getを繰り返しリンクされたリストに呼び出さない方が効率的です。代わりに、あなたがこれを行うことができます:

int e = 0; 
    for (Student s: ll) { 
     if (name.equals(s.name)) .... 
     e++; 
    } 
0

を既存の方法で作業を行うには、変更する必要があります。

if (name.equals(ll(e).name)) { 

if (name.equals(ll.get(e).name)) { 

に私たちは、要素を取得するために get()メソッドを使用する必要がありますリストからは、配列とは異なります。

あなたはメソッド名前で学生を検索したい場合は、次のようにまた、あなたは1を書き込むことができます。

public Student findStudent(String name){ 
     for (int e=0; e<ll.size(); e++) { 
      if (ll.get(e).name.equals(name)) { 
       return e; 
      } 
     } 
     //Not found 
     return null; 
    } 
関連する問題