黑马程序员技术交流社区
标题:
构造函数和SET,GET方法结合的问题
[打印本页]
作者:
陆强强
时间:
2012-6-7 07:22
标题:
构造函数和SET,GET方法结合的问题
本帖最后由 陆强强 于 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)传入时依旧显示负数成绩
作者:
罗文杰
时间:
2012-6-7 07:32
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
作者:
胡团乐
时间:
2012-6-7 08:08
改了下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
作者:
赵兵锋
时间:
2012-6-7 08:35
还可以这样写。
class Student {
private String name;
private int age;
private int results;
Student(String name, int age, int results) {
this.setAge(age);
this.setName(name);
this.setResults(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);
}
}
public class Main {
public static void main(String[] args) {
new Student("王五", 17, -78).speak();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2