黑马程序员技术交流社区
标题:
作业题,求解
[打印本页]
作者:
yangsing0
时间:
2014-11-8 21:23
标题:
作业题,求解
4. 键盘录入姓名和年龄存储ArrayList中
如果用户输出over,结束输入,迭代ArrayList
Person类
array.add(new Person("zhangsan",19));
lisi 50 Scanner nextLine()返回String
split(" +")
over
作者:
hailong
时间:
2014-11-8 22:53
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
/*键盘录入姓名和年龄存储ArrayList中
如果用户输出over,结束输入,迭代ArrayList*/
//创建Person类
class Person {
private String name;
private int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
// 重写toString方法,返回姓名和年龄
public String toString() {
return "姓名:" + name + " 年龄" + age;
}
}
public class GetInformation {
public static void main(String[] args) {
getinformation();
}
// 定义方法实现功能
public static void getinformation() {
// 创建ArrayList集合用于存储Person对象
ArrayList<Person> list = new ArrayList<Person>();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入姓名和年龄,中间用空格隔开");
String s = sc.nextLine();
// 判断用户输入的是否为over
if (!s.equalsIgnoreCase("over")) {
// 判断用户输入的字符串是否包含空格
if (!s.contains(" ")) {
System.out.println("输入有误,请重新输入");
continue;
}
// 切割字符串
String[] str = s.split(" +");
Integer i = new Integer(str[1]);
// 将切割出来的姓名和年龄存入集合
list.add(new Person(str[0], i));
continue;
}
// 迭代集合
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
break;
}
}
}
复制代码
作者:
hanxing
时间:
2014-11-8 23:49
这个怎么样?
import java.util.*;
class TestDemo2
{
public static void main(String[] args)
{
List<Person> array=new ArrayList<Person>();
Scanner sc=new Scanner(System.in);
do
{
System.out.println("请录入学生的姓名,输入over结束录入");
String name=sc.next();
if(name.toLowerCase().equals("over"))//转成小写并通过equals判断内容是否相等
break;
else
{
System.out.println("请录入学生的年龄");
int age=sc.nextInt();
Person p=new Person(name,age);
array.add(p);
}
}
while (true);
Iterator<Person> it=array.iterator();//创建迭代器对象并遍历集合
while(it.hasNext())
System.out.println(it.next());
}
}
class Person
{
private String name;
private int age;
public Person(){}
public Person(String name,int age)
{
this.name=name;
this.age=age;
}
public String getName()
{
return name;
}
public void setName()
{
this.name=name;
}
public void setAge()
{
this.age=age;
}
public int getAge()
{
return age;
}
public String toString()
{
return "Person[name="+name+",age="+age+"]";
}
}
复制代码
作者:
zhangyangLengen
时间:
2014-11-9 00:13
应该还需要对输入的年龄和姓名的格式进行判断:
首先对输入的字符串两边机型去除空格,进行判断是否为空;
然后将字符串分割;
对分割后的两个字符串,还要进行格式的内容正确性的判断
字符串转换整数是否有异常,整数是否过大,或者小于0;
以及姓名不能以数字等开头,等等
作者:
touch_world
时间:
2014-11-9 07:01
先留着回头写给你
作者:
陈召
时间:
2014-11-9 07:04
来看看答案。
作者:
坚持525
时间:
2014-11-9 14:26
hailong 发表于 2014-11-8 22:53
是不是可以再68行加上个换行语句呢,这样程序交互性会好点,光标会自动移到下一行。。。:)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2