2016-02-10 35 views
-2

我正在添加,更新和从数组列表中删除元素。由于我是Java新手或任何类型的编程,我无法找到谷歌搜索后的整个解决方案。我可以添加元素到arrayList。以下是我的代码:运行时间添加/删除/更新Java中的Arraylist

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


public class Main { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    ArrayList<Student> someStudent = new ArrayList<Student>(); 
    char quit = 'Y'; 
    int id; 
    String name; 
    float cgpa; 

    while(quit == 'Y'){ 
     System.out.print("\n ID: "); 
     id=scan.nextInt(); 

     System.out.print("\n Name: "); 
     name=scan.next(); 

     System.out.print("\n CGPA: "); 
     cgpa=scan.nextFloat(); 

     someStudent.add (new Student(id, name, cgpa)); 
     System.out.print(" Enter Another Record? (Y/N)"); 
     String word = scan.next(); 
     word = word.toUpperCase(); 
     quit= word.charAt(0); 
     //scan.close(); 
    } 

    for(Student student:someStudent){ 
     System.out.println(student.id); 
     System.out.println(student.name); 
     System.out.println(student.cgpa); 
    } 
    } 
    } 

Student.java:

public class Student { 

    public int id; 
    public String name; 
    public float cgpa; 
    //public String address; 

    public Student(int id,String name,float cgpa){ 
     this.id=id; 
     this.name=name; 
     this.cgpa=cgpa; 
    } 

} 

输出代码:

ID: 1 

Name: abc 

CGPA: 3.5 
Enter Another Record? (Y/N)y 

ID: 2 

Name: def 

CGPA: 2.6 
Enter Another Record? (Y/N)y 

ID: 3 

Name: xyz 

CGPA: 4.0 
Enter Another Record? (Y/N)n 
1 
abc 
3.5 
2 
def 
2.6 
3 
xyz 
4.0 

我的问题是如何从ArrayList中搜索元素,更新或删除。

+1

你的问题仍然有些不清楚。你能否更具体地说明你想用什么标准来搜索?您可以获取用户输入以与每个Student对象的字段进行比较,并询问用户是否想要更新某些字段(即更改cgpa)。 –

+0

基于ID的搜索元素 – Mrsk

回答

1

你可以尝试这样的事:

System.out.print("Select student by ID: "; 
int pickID = scan.nextInt(); 
boolean found = false; 
for(Student s : someStudent){ 
    if(s.id == pickID && !found){ 
     update(s); 
     found = true; 
    } 
} 
if(!found){ 
    System.out.println("No student with that ID."); 
} 

更新方法

public void update(Student s){ 
    boolean edit = true; 
    while(edit){ 
     System.out.println(String.format("Select operation:\n1. Change name\n2. Change ID\n3. Change CGPA\n4. Delete\n5. Done")); 
     int opt = scan.nextInt(); 
     switch(opt){ 
      case 1: 
       String newName = scan.next(); 
       s.setName(newName); 
       break; 
      case 2: 
       int newID = scan.nextInt(); 
       s.setID(newID); 
       break; 
      case 3: 
       float newCGPA = scan.nextFloat(); 
       s.setCGPA(newCGPA); 
       break; 
      case 4: 
       for(int i=0;i<someStudent.length();i++){ 
        if(someStudent.get(i)==s){ 
         someStudent.remove(i); 
        } 
       } 
       break; 
      case 5: 
       edit = false; 
       break; 
      default: 
       break; 
     } 
    } 
} 

添加方法,学生类

public void setID(int id){this.id=id;} 
public void setName(String name){this.name=name;} 
public void setCGPA(float cgpa){this.cgpa=cgpa;} 
0

取决于你想要搜索的是什么(我猜的名字不是唯一的,ID是cgpa怎么样?)你应该使用一个Map而不是列表。因此,您可以根据该地图中的唯一键找到学生。

+0

请参阅此链接并阅读有关地图:http://examples.javacodegeeks.com/java-basics/java-map-example/列表不是银色的子弹:) – Akceptor

相关问题