A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陆强强 中级黑马   /  2012-6-7 07:22  /  1793 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陆强强 于 2012-6-19 10:34 编辑

class Student
{
        private String name;
        private int age;
        private int results;

        Student(String name,int age,int results)
        {
                this.name=name;
                this.age=age;
                this.results=results;
        }
        public void setName(String name)
        {
                this.name=name;
        }
        public String getName()
        {
                return name;
        }
    public void setAge(int age)
        {
                if(age>0)
                        this.age=age;
                else
                        System.out.println("年龄输入错误");               
                        
        }
        public int getAge()
        {
                return age;
        }
        public void setResults(int results)
        {
               
                if(results>0)
                  this.results=results;
                else
                  System.out.println("成绩输入错误");
        }
        public int getResults()
        {
                return results;
        }
        public void speak()
        {
                System.out.println(name+","+age+","+results);
        }

}
class Study
{
        public static void main(String[] args)
        {
                new Student("王五",17,-78).speak();
                }
}
要求;通过new Student("王五",17,-78)传入年龄和成绩为负数时打印出如上的("成绩输入错误")等,而不是负数的值,就是说我通过SET方法传入负数成绩,打印("成绩输入错误")没问题,但用new Student("王五",17,-78)传入时依旧显示负数成绩

3 个回复

正序浏览
还可以这样写。
  1. class Student {
  2.         private String name;
  3.         private int age;
  4.         private int results;

  5.         Student(String name, int age, int results) {
  6.                 this.setAge(age);
  7.                 this.setName(name);
  8.                 this.setResults(results);
  9.         }

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

  13.         public String getName() {
  14.                 return name;
  15.         }

  16.         public void setAge(int age) {
  17.                 if (age > 0)
  18.                         this.age = age;
  19.                 else
  20.                         System.out.println("年龄输入错误");

  21.         }

  22.         public int getAge() {
  23.                 return age;
  24.         }

  25.         public void setResults(int results) {

  26.                 if (results > 0)
  27.                         this.results = results;
  28.                 else
  29.                         System.out.println("成绩输入错误");
  30.         }

  31.         public int getResults() {
  32.                 return results;
  33.         }

  34.         public void speak() {
  35.                 System.out.println(name + "," + age + "," + results);
  36.         }

  37. }

  38. public class Main {
  39.         public static void main(String[] args) {
  40.                 new Student("王五", 17, -78).speak();
  41.         }
  42. }
复制代码
回复 使用道具 举报
改了下speak()方法:
public void speak() {
        if (!(this.age > 0)) {
                System.out.println("年龄输入错误");
                this.age = 0;
        }
        if (!(this.results > 0)) {
                System.out.println("成绩输入错误");
                this.results = 0;
        }
       
        System.out.println(name + "," + age + "," + results);
}
打印结果:
成绩输入错误
王五,17,0
回复 使用道具 举报
   Student(String name,int age,int results)
        {
                this.name=name;
                this.age=age;
                this.results=results;
        }
你这个构造函数里没有对传入的age,results的值进行判断,直接赋值给了this.age,this.results所以你输入负数的时候不会提示,而你的Set方法里面加了对age,results的判断所以可以在传入成绩和年龄为负数的时候打印出"成绩输入错误"。你在构造函数里添加判断就好了。改成如下:
Student(String name,int age,int results)
        {
                this.name=name;
                if(age > 0)
                        this.age=age;
                else
                        System.out.println("年龄输入错误");
                if(results >= 0)
                  this.results=results;
                else
                  System.out.println("成绩输入错误");
        }
成绩和年龄为负数的时候会输出打印语句,并把age和results赋值为初始值为0

评分

参与人数 1技术分 +1 收起 理由
赵志勇 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马