2012-05-24 40 views
-3
import java.util.ArrayList; 

import java.util.Scanner; 

public class StudentList { 
    public static void main(String[] args) { 

     ArrayList<Student> students = new ArrayList<Student>(); 
     int choice; 

     printMenu(); 

     do { 
      Scanner input = new Scanner(System.in); 
      choice = input.nextInt(); 

      switch (choice) { 

      case 1: 
       System.out.println("\nAdd a student\n"); 
       students.add(addStudent()); 
       printMenu(); 
       break; 
      case 2: 
       System.out.println("\nFind a student\n"); 
       findStudent(students); 
       printMenu(); 
       break; 
      case 3: 
       System.out.println("\nDelete a student\n"); 
       displayAllStudents(students); 
       printMenu(); 
       break; 
      case 4: 
       System.out.println("\nDispay all students\n"); 
       displayAllStudents(students); 
       printMenu(); 
       break; 
      case 5: 
       System.out.println("\nDisplay the total number of students\n"); 
       studentSize(students); 
       printMenu(); 
       break; 
      case 6: 
       System.out.println("\nGoodbye!\n"); 
       break; 
      default: 
       System.out 
         .println("\nYour choice," + choice + ", is invalid\n"); 
       break; 
      } 
     } while (choice != 6); 
    } 

    public static void printMenu() { 
     System.out 
       .println("\nPlease select from the following menu:\n" 
         + "\t1. Add a student\n" + "\t2. Find a student\n" 
         + "\t3. Delete a student\n" 
         + "\t4. Display all students\n" 
         + "\t5. Display the total number of students\n" 
         + "\t6. Exit\n"); 
     System.out.print("Your choice: "); 
    } 

    public static Student addStudent() { 
     Scanner inputS = new Scanner(System.in); 
     System.out.println("First Name:"); 
     String fName = inputS.nextLine(); 
     System.out.println("Last Name:"); 
     String lName = inputS.nextLine(); 
     System.out.println("Major Name:"); 
     String major = inputS.nextLine(); 
     System.out.println("Student Name:"); 
     Integer sNumber = inputS.nextInt(); 
     System.out.println("gpa:"); 
     double grade = inputS.nextDouble(); 
     return new Student(fName, lName, Major, sNumber, grade); 
    } 

    public static void displayAllStudents(ArrayList<Student> students) { 
     for (Student s : students) { 
      System.out.print(s.toString()); 
     } 
    } 

    public static void findStudent(ArrayList<Student> students) { 
     Scanner inputN = new Scanner(System.in); 
     String name = inputN.nextLine(); 
     for (Student s : students) { 

      if (s.getFName().equals(name)) { 
       System.out.println(s); 
       break; 
      } 

     } 

    } 

    public static void deleteStudent(ArrayList<Student> students) { 
     Scanner inputS = new Scanner(System.in); 
     String sNum = inputS.next(); 
     for (Student s : students) { 
      if (s.FName().equals(sNum)) { 
       students.remove(s); 
       break; 
      } 
     } 
    } 

    public static void studentSize(ArrayList<Student> students) { 
     System.out.printf("Size: %\n", students.size()); 
    } 
} 

我无法弄清楚什么是错我的代码ArrayList中的java ..我有一个错误

它给了我一个错误的这三样东西,当我尝试编译

return new Student(fName, lName, Major, sNumber, grade); 

if(s.FName().equals(sNum)) 

if(s.getFName().equals(name)) 
+3

什么是错误? –

回答

1

在一个地方,你都

s.FName() 

,并在另一

s.getFName() 

而且下面会给你rumtime

for(Student s: students) 
{ 
    if(s.FName().equals(sNum)) 
    { 
     students.remove(s); 
     break; 
    } 
} 
2

第一个错误:

return new Student(fName, lName, Major, sNumber, grade); 

主要不是一个变量,它主要的。

二:

if(s.FName().equals(sNum)) 

应该

if(s.getFName().equals(sNum)) 

UPDATE

public static Student addStudent()  { 
    Scanner inputS = new Scanner(System.in); 
    System.out.println("First Name:"); 
    String fName = inputS.nextLine(); 
    System.out.println("Last Name:"); 
    String lName = inputS.nextLine(); 
    System.out.println("Major Name:"); 
    String major = inputS.nextLine(); //variable name: major 
    System.out.println("Student Name:"); 
    Integer sNumber = inputS.nextInt(); 
    System.out.println("gpa:"); 
    double grade = inputS.nextDouble(); 
    //variable sent: Major, it should be major 
    return new Student(fName, lName, Major, sNumber, grade); 
} 
+0

谢谢你,以及如何处理返回新学生(fName,lName,Major,sNumber,等级); ??? – Angela

0

您不能删除数组的对象,而在寻找它。 你应该使用迭代器。 像这样:

for (Iterator<Student> it = students.iterator(); it.hasNext();) 
     { 
      Student student = (Student)it.next(); 
      if (!s.getFName().equals(sNum)) 
      { 
       tmp.add(student); 
      } 

     lines.clear(); 
     for (Student t: tmp) 
      students.add(t); 
     tmp.clear(); 
     } 
+1

有[Iterator#remove](http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html#remove())方法。 –

相关问题