黑马程序员技术交流社区

标题: 有道java题,不难,但是感觉不太会 [打印本页]

作者: y506798278    时间: 2016-7-23 15:57
标题: 有道java题,不难,但是感觉不太会
题目:定义一个Person类,成员变量是String name, int age.从控制台输入三个人的名字和年龄,利用有参构造创建三个对象,怎么搞?

作者: linguoqun    时间: 2016-7-23 15:57
标题: 满意请采纳,谢谢!
本帖最后由 linguoqun 于 2016-7-24 00:45 编辑

/*亲自调试过,运行正常,效果如下所示,先让用户分别输入三个人的姓名和年龄,
* 然后在控制台将这三个人的姓名和年龄输出
*
* 请输入第1个人的名字:linguoqun
* 请输入第1个人的年龄:26
* 请输入第2个人的名字:liudehua
* 请输入第2个人的年龄:18
* 请输入第3个人的名字:zhoujielun
* 请输入第3个人的年龄:17
* 第1个人的名字是:linguoqun
* 第1个人的年龄是:26
* 第2个人的名字是:liudehua
* 第2个人的年龄是:18
* 第3个人的名字是:zhoujielun
* 第3个人的年龄是:17

*/
//亲自调试过,运行没问题的。


import java.util.Scanner;

//定义一个Person类,成员变量是String name, int age.
//从控制台输入三个人的名字和年龄,利用有参构造创建三个对象

public class HelloWorld {

        public static void main(String[] args) {
                Scanner sc=new Scanner(System.in);
                Person[] person=new Person[3];
                Person p1=new Person();
                Person p2=new Person();
                Person p3=new Person();
                person[0]=p1;
                person[1]=p2;
                person[2]=p3;
               
                for(int i=0;i<3;i++)
                {
                        System.out.printf("请输入第%d个人的名字:",i+1);
                        person.setName(sc.next());
                        System.out.printf("请输入第%d个人的年龄:",i+1);
                        person.setAge(sc.nextInt());
                }
                for(int i=0;i<3;i++)
                {
                        System.out.printf("第%d个人的名字是:%s\n", i+1,person.getName());
                        System.out.printf("第%d个人的年龄是:%d\n", i+1,person.getAge());
                }
        }

}
class Person
{
        private String name;
        private int age;
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
       

       
       

}

作者: 一声娇喘卿已乱    时间: 2016-7-23 16:07
首先你的person里面得有构造方法,然后创建对象的时候直接在()里面填写,比如("张三",18)
作者: 一声娇喘卿已乱    时间: 2016-7-23 16:09
Class Person
{
        String name;
        int age;
        Person(){};
        person(String name,int age)
        {
                this.name=name;
                this.age=age;
        }
}
作者: y506798278    时间: 2016-7-23 17:20
一声娇喘卿已乱 发表于 2016-7-23 16:09
Class Person
{
        String name;

我的意思是运行一次程序,然后从控制台输入参数,如果这么简单,我还问干嘛
作者: Kingdragon    时间: 2016-7-23 22:00
Person(){
private String name;
private int age;

public void setName(String name){
  this.name = name;
}
public String getName(){
return this.name;
}

public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}
import java.until.Scanner
public class TestPerson(){
public static void main(String args){
Scanner  sc = new Scanner(System.in);
Person[] p = new  Person[3];
for (int i = o; i < p.length ; i++){
p[i] = new Person();
  System.out.println("请输入人名:")
   p[i].setName(sc.next());
  System.out.println("请输入年龄:")
   p[i].setAge(sc.next());
}
}
}

作者: Kingdragon    时间: 2016-7-23 22:01
Kingdragon 发表于 2016-7-23 22:00
Person(){
private String name;
private int age;

是class Person{

}

写错了类名{:3_54:}
作者: W1058330629    时间: 2016-7-23 22:32
public class Person {
        private String name;
        private int age;
        //姓名
        public void setName(Animal a){
                a.setName(name);
        }
        public String getName(Animal a){
                return a.getName();
        }
        //年龄
        public void setAge(Animal a){
                a.setAge(age);
        }
        public int getAge(Animal a){
                return a.getAge();
        }
}

作者: zhu21925    时间: 2016-7-23 22:55
有参构造加个键盘录入字符串和数字不就ok了
作者: 张程浩    时间: 2016-7-24 00:20
package demo1;

public class person {
        //定义成员变量
     private String name;
     private String age;
     //定义构造函数
        public person(String name, String age) {
                super();
                this.name = name;
                this.age = age;
               
               
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public String getAge() {
                return age;
        }
        public void setAge(String age) {
                this.age = age;
        }
   
}
//上面是定义的person 类
import java.util.ArrayList;
import java.util.Scanner;


import demo1.person;


public class persons {
public static void main(String[] args) {
        //创建键盘录入
        Scanner sc = new Scanner(System.in);
        //提醒用户输入
        //定义集合存储三个人的 名字和年龄
        ArrayList<String> f = new ArrayList<String>();
        for (int i = 0; i < 3; i++) {
               
                System.out.println("请输入名字");
                String a = sc.next();
                System.out.println("请输入年龄");
                String b = sc.next();
                person per = new person(a,b);
                String c = per.getName();
                String d = per.getAge();
                f.add(c);
                f.add(d);
        }
            System.out.println(f);
}
  
}
//这是实现类
作者: 张程浩    时间: 2016-7-24 00:21
package demo1;

public class person {
        //定义成员变量
     private String name;
     private String age;
     //定义构造函数
        public person(String name, String age) {
                super();
                this.name = name;
                this.age = age;
               
               
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public String getAge() {
                return age;
        }
        public void setAge(String age) {
                this.age = age;
        }
   
}
//上面是定义的person 类
import java.util.ArrayList;
import java.util.Scanner;


import demo1.person;


public class persons {
public static void main(String[] args) {
        //创建键盘录入
        Scanner sc = new Scanner(System.in);
        //提醒用户输入
        //定义集合存储三个人的 名字和年龄
        ArrayList<String> f = new ArrayList<String>();
        for (int i = 0; i < 3; i++) {
               
                System.out.println("请输入名字");
                String a = sc.next();
                System.out.println("请输入年龄");
                String b = sc.next();
                person per = new person(a,b);
                String c = per.getName();
                String d = per.getAge();
                f.add(c);
                f.add(d);
        }
            System.out.println(f);
}
  
}
//这是实现类
作者: y506798278    时间: 2016-7-24 11:13
linguoqun 发表于 2016-7-23 15:57
/*亲自调试过,运行正常,效果如下所示,先让用户分别输入三个人的姓名和年龄, * 然后在控制台将这三个人 ...

创建对象还是不能用循环体来做,不然抛异常,这楼的哥们是对的。还是可以简化一下person[0] = new Person();person[1] = new Person();person[2] = new Person()。直接写就行了。还有用printf来打印是C语言留些来的习惯吗,很少见呀
作者: 695010894    时间: 2016-8-12 11:35
建一个有参构造就好了
Person(String name, int age){};
作者: zjy9399    时间: 2016-9-20 14:01
本帖最后由 zjy9399 于 2016-9-20 14:31 编辑

package itcast;

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

class Person {
        // 私有化成员属性
        private String name;
        private int age;

        // 创建有参构造,用于明确对象属性值
        public Person(String name, int age) {
                this.name = name;
                this.age = age;
        }

        // 创建set\get方法,用于外界访问属性
        public String getName() {
                return name;
        }

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

        public int getAge() {
                return age;
        }

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

public class Test {
        public static void main(String[] args) {
                ArrayList<Person> list = new ArrayList<>();
                Scanner sc = new Scanner(System.in);
                Person p = null;
                for (int i = 0; i < 3; i++) {
                        System.out.println("请输入姓名:");
                        String name = sc.next();
                        System.out.println("请输入年龄:");
                        int age = sc.nextInt();
                        p = getNewInstance(name, age);
                        list.add(p);
                }
                for(Person ps : list){
                        System.out.println(ps.getName()+ps.getAge());
                }
        }

        public static Person getNewInstance(String name, int age) {
                Person p = new Person(name, age);
                return p;

        }
}

作者: zjy9399    时间: 2016-9-20 14:03
本帖最后由 zjy9399 于 2016-9-20 14:05 编辑
张程浩 发表于 2016-7-24 00:21
package demo1;

public class person {

这样创建对象,不错呀。。




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