黑马程序员技术交流社区
标题: 有道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
我的意思是运行一次程序,然后从控制台输入参数,如果这么简单,我还问干嘛
作者: 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
是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
创建对象还是不能用循环体来做,不然抛异常,这楼的哥们是对的。还是可以简化一下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 编辑
这样创建对象,不错呀。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |