wangluan123 2020-05-06 17:00 采纳率: 100%
浏览 400
已采纳

使用for循环来输入3个学生信息,用i来获取循环的下标然后传入数组里面,可是刚我运行了一下,只有最后一个值传入进数组了,之前输入的两个值没有传入?

使用for循环来输入3个学生信息,用i来获取循环的下标然后传入数组里面,可是刚我运行了一下,只有最后一个值传入进数组了,之前输入的两个值没有传入

这个是属性和方法类_

图片说明

这个是测试类

图片说明

这个是运行结果

图片说明

附上我写的问题代码

Student类

public class Student {
    String name[]; // 姓名
    int age[]; // 年龄

    public void addName(String dName,int j){ // 添加姓名的方法
        name = new String[3];
        name[j] = dName;
    }

    public void addAge(int dage,int j){ // 添加年龄的方法
        age = new int[3];
        age[j] = dage;
    }
}

StuTest测试类

public class StuTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Student stu = new Student();
        for(int i = 0;i < 3;i++){
            System.out.println("请输入学生姓名:");
            Scanner sc = new Scanner(System.in);
            String name = sc.next();
            System.out.println("请输入学生年龄:");
            int age = sc.nextInt();
            stu.addName(name,i);
            stu.addAge(age,i);
        }

        for(int j = 0;j < 3;j++){
            System.out.println(stu.name[j]+"\t"+stu.age[j]);
        }
    }


}

  • 写回答

1条回答 默认 最新

  • 舍得心境 2020-05-06 17:04
    关注

    你的addname和addage方法有问题,每次调用都会new 一个string和int对象。

    public class Student {
    String name[]= new String[3]; // 姓名
    int age[]= new int[3]; // 年龄

    public void addName(String dName,int j){ // 添加姓名的方法
    
        name[j] = dName;
    }
    
    public void addAge(int dage,int j){ // 添加年龄的方法
    
        age[j] = dage;
    }
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了