有没有哪位帮忙看看啊,这个我输入的数据好像穿送不到ArrayList集合中,我后面答应list的长度也是0,是哪里出问题了,谢谢。
package www.dzy.com;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentSystem {
public static void main(String[] args) {
loop: while (true) {
ArrayList<Student> list=new ArrayList<>();
System.out.println("---------欢迎来到学生管理系统----------");
System.out.println("1.添加学生");
System.out.println("2.删除学生");
System.out.println("3.修改学生");
System.out.println("4.查询学生");
System.out.println("5.退出系统");
System.out.println("请输入你的选择:");
Scanner sc=new Scanner(System.in);
String choose= sc.next();
switch (choose)
{
case "1":
addStudent(list);
break;
case "2":
deleteStudent(list);
break;
case "3":
updateStudent(list);
break;
case "4":
queryStudent(list);
break;
case "5":
System.out.println("退出程序");
break loop;
default:
System.out.println("您输入错误!!");
break;
}
}
}
public static void addStudent(ArrayList<Student> list)
{
Student s=new Student();
Scanner sc=new Scanner(System.in);
String id=null;
while (true) {
System.out.println("请输入学生的ID");
id=sc.next();
boolean flag=contains(list,id);
if(flag==true){
System.out.println("您输入的id已经存在,请重新录入");
}
else{
s.setId(id);
break;
}
}
System.out.println("请输入学生的姓名");
String name=sc.next();
s.setName(name);
System.out.println("请输入学生的年龄");
int age=sc.nextInt();
s.setAge(age);
System.out.println("请输入学生的家庭住址");
String address=sc.next();
s.setAddress(address);
list.add(s);
System.out.println("学生信息添加成功");
}
public static void deleteStudent(ArrayList<Student> list)
{
System.out.println("删除学生");
}
public static void updateStudent(ArrayList<Student> list)
{
System.out.println("修改学生");
}
public static void queryStudent(ArrayList<Student> list)
{
if (list.size()==0)
{
System.out.println("当前无学生信息,请添加后再查询");
//结束方法
return;
}
//打印表头信息
System.out.println("id\t\t姓名\t年龄\t家庭住址");
//当代码执行到这里时,表示集合中是有数据的
for (int i = 0; i < list.size(); i++)
{
Student stu=list.get(i);
System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getAge()+"\t"+stu.getAddress());
}
}
public static boolean contains(ArrayList<Student> list,String id)
{
for (int i = 0; i < list.size(); i++) {
Student stu=list.get(i);
String sid= stu.getId();
if(sid.equals(id)){
return true;
}
}
return false;
}
}
你的list 在 while(true) 循环里面, 每次进来都是重新创建一个 ArrayList,所以你查询不到新添加的数据
修改: 把 List list=new ArrayList<>(); 放到 while(true) 的上面去
public List<E> subList(int fromIndex, int toIndex) {
subListRangeCheck(fromIndex, toIndex, size);
return new SubList(this, 0, fromIndex, toIndex);
}
声明:
private class SubList extends AbstractList<E> implements RandomAccess {}
看来ArryList处处体现出RandomAccess接口的特性——支持随机访问。
问题可能出在数据存入ArrayList集合的过程中。请问你可以提供你的代码或者伪代码吗,这样我可以更好地帮助你解决问题。