为什么我的代码输出来的是统计数量为1.

为什么我的代码输出来的是统计数量为1.

学科
package com.imooc.subject;
public class Subject {
 //私有属性成员:学科名称、学科编号、学制年限
 private  String name1;
 private  String nameno;
 private int year;
 private Student[] myStudent;
 private int a;
 //无参构造函数和有参构造函数
 public Subject() {}
 //给成员属性赋值
 public  Subject(String name1,String nameno,int year) {
  this.setName1(name1);
  this.setNameno(nameno);
  this.setYear(year);
  
 }
 //name私有属性的访问取值和赋值
 public void setName1(String name1) {this.name1=name1; }
 public String getName1() {return this.name1;}
 //nameno私有成员的访问权限取值和赋值
 public void setNameno(String nameno) {this.nameno=nameno;}
 public  String getNameno() {return this.nameno;}
 //year私有成员的访问权限取值和赋值
 public void setYear(int year) {this.year=year;}
 public  int getYear() {return this.year;}
 public void setMyStudent(Student[] myStudent) {this.myStudent=myStudent;
 }
 public Student[] getMyStudent() {
  if(myStudent==null) myStudent=new Student[200]; 
   return this.myStudent ;}
 public void  setA(int a) {this.a=a;}
 public int getA() {
  return this.a;}
 //
 public   String daying() {
  String str="专业信息如下:\n学科名称:"+this.getName1()+"\n学科编号:"+
                this. getNameno()+"\n学制年限:"+this.getYear();
  return str;
 }
 public void b(Student c) {
  for(int i=0;i<this.getMyStudent().length;) {
   if(this.getMyStudent()[i]==null)
   this.getMyStudent()[i]=c;
   this.a=i+1;
   i++;
   return;
   
  }
 }
}
学生
package com.imooc.subject;
public class Student {
 //成员属性:学号、姓名、性别、年龄
 private String no;
 private String name;
 private String sex;
 private int age;
 private Subject subjectname2;
 public Student() {}
 public Student(String no,String name,String sex,int age) {
  this.setNo(no);
  this.setName(name);
  this.setSex(sex);
  this.setAge(age);
  
 }
 
 public Student(String no,String name,String sex,int age,Subject subjectname2) {
  this.setNo(no);
  this.setName(name);
  this.setSex(sex);
  this.setAge(age);
  this.setSubjectname2(subjectname2);
 }
 public void setNo(String no) {this.no=no;}
 public String getNo() {return this.no;}
 public void setName(String name) {this.name=name;}
 public String getName() {return this.name;}
 public void setSex(String sex) {this.sex=sex;}
 public String getSex() {return this.sex;}
 public void setAge( int age) {if(age<10||age>100) this.age=18; else this.age=age;}
 public int getAge() {return this.age;}
 public void setSubjectname2(Subject subjectname2) {this.subjectname2=subjectname2;}
 public Subject getSubjectname2() {return this.subjectname2;}
 public String stu() {
  String str="学生信息如下:\n学号:"+this.getNo()+"\n姓名:"+
                this.getName()+"\n性别:"+this.getSex()+"\n年龄:"+this.getAge();
  return str;
 }
 //方案1
 public String stu(String name,int age) {String str="学生信息如下:\n学号:"+this.getNo()+"\n姓名:"+
            this.getName()+"\n性别:"+this.getSex()+"\n年龄:"+this.getAge()+"\n学科名称:"+name+"\n学制年限:"+age;
         return str;
 }
 //方案2
 public String stu(Subject mysubject) {String str="学生信息如下:\n学号:"+this.getNo()+"\n姓名:"+
            this.getName()+"\n性别:"+this.getSex()+"\n年龄:"+this.getAge()+"\n学科名称:"+mysubject.getName1()+"\n学制年限:"+mysubject.getYear();
         return str;
 }
 //方案3
 public String st() {String str="学生信息如下:\n学号:"+this.getNo()+"\n姓名:"+
            this.getName()+"\n性别:"+this.getSex()+"\n年龄:"+this.getAge()+"\n学科名称:"+this.getSubjectname2().getName1()+"\n学制年限:"+this.getSubjectname2().getYear();
         return str;
 }
 
}
测试
package com.imooc.test;
import com.imooc.subject.Subject;
 import java.util.Scanner;
import com.imooc.subject.Student;
public class Testsubject {
   public static void main(String[] agrs) {
    String name,name1;
    int b;
    Scanner sc=new Scanner(System.in );
    System.out.println("请输入专业名称:");
    name=sc.next();
    System.out.println("请输入学科编号:");
    name1=sc.next();
    System.out.println("请输入学制年限:");
    b=sc.nextInt();
     Subject one=new Subject(name,name1,b );
    System.out.println(one.daying());
    System.out.println("==================");
     Student two=new Student("张三","S01","男",18);
    System.out.println( two.stu());
    System.out.println("==================");
     Student three=new Student("王麻子","S02","男",19);
    System.out.println( three.stu("计算机科学与应用",4));
    System.out.println("==================");
  Student four=new Student("老子","S03","男",20);
    System.out.println( four.stu(one));
    System.out.println("==================");
  Student five=new Student("李四","S04","男",21,one);
    System.out.println( five.st());
    one.b(two);
    one.b(five);
    System.out.println(one.getA());
    
    
    
    
   
   }
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕雪 2018-07-01 09:51:48

1)44行的if要加大括号,括到49行。

2)43行

 for(int i=0;i<this.getMyStudent().length;) {//这里把i++移动到这里

改成

 for(int i=0;i<this.getMyStudent().length;i++) {

祝:学习愉快

qq_流沙_9 2018-06-29 23:07:35

44行的if要加大括号,要不然每次i=0即第一次进循环就会遇到return,a=i+1;所以结果是1

  • 提问者 慕虎3463655 #1
    不行呀,还是输出为1
    2018-06-30 21:45:53
  • 提问者 慕虎3463655 #2
    根据断点debug为何我的i++;这一句没有起作用。i在第二次赋值时还是0,当在判断时,i=0;已经赋值不是null,直接跳过if判断,直接return;
    2018-06-30 21:50:22
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师