A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yangsing0 中级黑马   /  2014-11-8 21:23  /  2398 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


4. 键盘录入姓名和年龄存储ArrayList中
   如果用户输出over,结束输入,迭代ArrayList

   Person类

   array.add(new Person("zhangsan",19));

   lisi     50  Scanner nextLine()返回String
   split(" +")
   over

6 个回复

倒序浏览

  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. import java.util.Scanner;

  4. /*键盘录入姓名和年龄存储ArrayList中
  5. 如果用户输出over,结束输入,迭代ArrayList*/

  6. //创建Person类
  7. class Person {
  8.         private String name;
  9.         private int age;

  10.         Person(String name, int age) {
  11.                 this.name = name;
  12.                 this.age = age;
  13.         }

  14.         public void setName(String name) {
  15.                 this.name = name;
  16.         }

  17.         public String getName() {
  18.                 return name;
  19.         }

  20.         public void setAge(int age) {
  21.                 this.age = age;
  22.         }

  23.         public int getAge() {
  24.                 return age;
  25.         }

  26.         // 重写toString方法,返回姓名和年龄
  27.         public String toString() {
  28.                 return "姓名:" + name + " 年龄" + age;
  29.         }

  30. }

  31. public class GetInformation {

  32.         public static void main(String[] args) {
  33.                 getinformation();
  34.         }

  35.         // 定义方法实现功能
  36.         public static void getinformation() {
  37.                 // 创建ArrayList集合用于存储Person对象
  38.                 ArrayList<Person> list = new ArrayList<Person>();
  39.                 Scanner sc = new Scanner(System.in);
  40.                 while (true) {
  41.                         System.out.println("请输入姓名和年龄,中间用空格隔开");
  42.                         String s = sc.nextLine();
  43.                         // 判断用户输入的是否为over
  44.                         if (!s.equalsIgnoreCase("over")) {
  45.                                 // 判断用户输入的字符串是否包含空格
  46.                                 if (!s.contains(" ")) {
  47.                                         System.out.println("输入有误,请重新输入");
  48.                                         continue;
  49.                                 }
  50.                                 // 切割字符串
  51.                                 String[] str = s.split(" +");
  52.                                 Integer i = new Integer(str[1]);
  53.                                 // 将切割出来的姓名和年龄存入集合
  54.                                 list.add(new Person(str[0], i));
  55.                                 continue;
  56.                         }
  57.                         // 迭代集合
  58.                         Iterator<Person> it = list.iterator();
  59.                         while (it.hasNext()) {
  60.                                 System.out.println(it.next());
  61.                         }
  62.                         break;
  63.                 }
  64.         }

  65. }
复制代码


回复 使用道具 举报
这个怎么样?
  1. import java.util.*;
  2. class TestDemo2
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 List<Person> array=new ArrayList<Person>();
  7.                 Scanner sc=new Scanner(System.in);

  8.                 do
  9.                 {       
  10.                         System.out.println("请录入学生的姓名,输入over结束录入");
  11.                         String name=sc.next();
  12.                         if(name.toLowerCase().equals("over"))//转成小写并通过equals判断内容是否相等
  13.                                 break;       
  14.                         else
  15.                         {       
  16.                                 System.out.println("请录入学生的年龄");
  17.                                 int age=sc.nextInt();
  18.                                 Person p=new Person(name,age);       
  19.                                 array.add(p);
  20.                         }               
  21.                 }
  22.                 while (true);

  23.                 Iterator<Person> it=array.iterator();//创建迭代器对象并遍历集合
  24.                 while(it.hasNext())
  25.                         System.out.println(it.next());


  26.         }
  27. }


  28. class Person
  29. {
  30.         private String name;
  31.         private int age;


  32.         public Person(){}

  33.         public Person(String name,int age)
  34.         {
  35.                 this.name=name;
  36.                 this.age=age;
  37.         }
  38.        
  39.         public String getName()
  40.         {
  41.                 return name;
  42.         }

  43.         public void setName()
  44.         {
  45.                 this.name=name;
  46.         }

  47.         public void setAge()
  48.         {
  49.                 this.age=age;
  50.         }
  51.         public int getAge()
  52.         {
  53.                 return age;
  54.         }

  55.         public String toString()       
  56.         {
  57.                 return "Person[name="+name+",age="+age+"]";
  58.         }
  59. }
复制代码
回复 使用道具 举报
应该还需要对输入的年龄和姓名的格式进行判断:
首先对输入的字符串两边机型去除空格,进行判断是否为空;
然后将字符串分割;
  对分割后的两个字符串,还要进行格式的内容正确性的判断
  字符串转换整数是否有异常,整数是否过大,或者小于0;
  以及姓名不能以数字等开头,等等
回复 使用道具 举报
先留着回头写给你
回复 使用道具 举报
来看看答案。
回复 使用道具 举报

是不是可以再68行加上个换行语句呢,这样程序交互性会好点,光标会自动移到下一行。。。:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马