黑马程序员技术交流社区

标题: 这段代码哪里出问题了,求大神指点 [打印本页]

作者: 斥候7300    时间: 2015-11-30 21:24
标题: 这段代码哪里出问题了,求大神指点
package d_demo;

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

//实现:如何从分别键盘中录入一个人的信息(姓名、年龄、性别、电话、住址),并封装成一个对象,
//最后把对象存储在集合中。并做简单的代码实现。
//创建一个人的类
class Personal{
        String name;//表示姓名
        int age;//表示年龄
        String sex;//表示性别
        String num;//表示电话
        String home;//表示地址
        //创建一个无参构造函数
        Personal(){
                Scanner sc = new Scanner(System.in);       
               
                System.out.println("请输入姓名");
                this.name = sc.nextLine();
               
                System.out.println("请输入年龄");
                String s1=sc.nextLine();
                this.age = Integer.parseInt(s1);
               
                System.out.println("请输入性别");
                this.sex = sc.nextLine();
               
                System.out.println("请输入电话");
                this.num = sc.nextLine();
               
                System.out.println("请输入地址");
                this.home= sc.nextLine();
               
        }
        //创建一个有参构造函数
        Personal(String name,int age,String sex,String num,String home){
        this.name =name;
        this.age = age;
        this.sex=sex;
        this.num=num;
        this.home=home;
        }
        //复写父类中toString方法
        public String toString() {
                return "Personal [姓名=" + name + ", 年龄=" + age + ", 性别=" + sex + ", 电话=" + num + ", 地址=" + home + "]";
        }
       
       
       
}
public class Demo {
        public static void main(String[] args) {
               
                ArrayList li = new ArrayList();
               
                //创建一个Personal的对象
                Personal p1 = new Personal();
                li.add(p1);
               
                //遍历结合集合中的对象
                for (ListIterator it = li.listIterator(); it.hasNext(); ) {
                        System.out.println(it.next());
                       
                }
        }
}

作者: 斥候7300    时间: 2015-11-30 21:26
在输入的时候 输入完名字就无法输入年龄了,求指教 哪里出错了
作者: yuhongzhen    时间: 2015-11-30 21:52
斥候7300 发表于 2015-11-30 21:26
在输入的时候 输入完名字就无法输入年龄了,求指教 哪里出错了

我试过了,如果是在中文输入法下,输入 回车 确认,就会出问题。但是在英文输入法状态下,就没有问题。我也不知道原因,等大神指教。
作者: bbaijiajinger    时间: 2015-11-30 21:54
System.out.println("请输入年龄");
                 String s1=sc.nextLine();
                 this.age = Integer.parseInt(szifuchuan1);
你年龄的类型是int而接受输入值时确是字符串类型
问题应该在这里吧
作者: pl8236448    时间: 2015-11-30 22:05
你这用空参构造干这事,我也是醉了
作者: 斥候7300    时间: 2015-11-30 22:05
bbaijiajinger 发表于 2015-11-30 21:54
System.out.println("请输入年龄");
                 String s1=sc.nextLine();
                 this.ag ...

记得老师课时说过如果是输入int型的数字     也就是说用sc.nextInt()   后面的sc.nextLine() 语句会把 回车键 当做输入的数值 所以我特意在这里输入字符串表示年龄 在将字符串转成int型数字
作者: 斥候7300    时间: 2015-11-30 22:11
pl8236448 发表于 2015-11-30 22:05
你这用空参构造干这事,我也是醉了

不这样做的话,请问该用什么方法来实现这个功能,求指教
这是题目要求:
实现:如何从分别键盘中录入一个人的信息(姓名、年龄、性别、电话、住址),并封装成一个对象,
//最后把对象存储在集合中。并做简单的代码实现。
作者: pl8236448    时间: 2015-11-30 22:16
先接收下来然后用有参构造传入不是一样的吗?
作者: 斥候7300    时间: 2015-11-30 22:24
pl8236448 发表于 2015-11-30 22:16
先接收下来然后用有参构造传入不是一样的吗?

我是想省点步奏,请问我这样有什么弊端吗? 有什么忌讳没?(我刚学没多久,请指教)
作者: 队长别开枪是我    时间: 2015-11-30 22:51
完全没整明白
作者: swch1991    时间: 2015-12-1 21:37

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

  3. class Course{
  4.         //如何从分别键盘中录入一个人的信息(姓名、年龄、性别、电话、住址),并封装成一个对象,最后把对象存储在集合中。并做简单的代码实现。
  5.         public static void main(String[] args){
  6.                 ArrayList<Student> al = new ArrayList<>();
  7.                 Scanner sc = new Scanner(System.in);
  8.                 System.out.println("请按格式输入信息:姓名,年龄,性别,电话,地址");
  9.                 String s = sc.nextLine();
  10.                 String[] arr = s.split(",");
  11.                 al.add(new Student(arr[0],Integer.parseInt(arr[1]),arr[2],arr[3],arr[4]));
  12.         }

  13. }
  14. class Student {
  15.         private String name;
  16.         private int age;
  17.         private String sex;
  18.         private String tel;
  19.         private String add;
  20.         public Student() {
  21.                 super();
  22.                
  23.         }
  24.         public Student(String name, int age, String sex, String tel, String add) {
  25.                 super();
  26.                 this.name = name;
  27.                 this.age = age;
  28.                 this.sex = sex;
  29.                 this.tel = tel;
  30.                 this.add = add;
  31.         }
  32.         public String getName() {
  33.                 return name;
  34.         }
  35.         public void setName(String name) {
  36.                 this.name = name;
  37.         }
  38.         public int getAge() {
  39.                 return age;
  40.         }
  41.         public void setAge(int age) {
  42.                 this.age = age;
  43.         }
  44.         public String getSex() {
  45.                 return sex;
  46.         }
  47.         public void setSex(String sex) {
  48.                 this.sex = sex;
  49.         }
  50.         public String getTel() {
  51.                 return tel;
  52.         }
  53.         public void setTel(String tel) {
  54.                 this.tel = tel;
  55.         }
  56.         public String getAdd() {
  57.                 return add;
  58.         }
  59.         public void setAdd(String add) {
  60.                 this.add = add;
  61.         }
  62.         @Override
  63.         public String toString() {
  64.                 return "Student [name=" + name + ", age=" + age + ", sex=" + sex
  65.                                 + ", tel=" + tel + ", add=" + add + "]";
  66.         }
  67.        
  68. }
复制代码

作者: 1018chenhaiyang    时间: 2015-12-2 11:26
nextline 就是这样的,用next吧
作者: bukai123    时间: 2015-12-2 12:53
看着好像没什么问题啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2