(1)如果方法入参为负数,则不给成员变量age赋值,并提示输入的年龄有误; (2)如果方法入参为非负数,则给成员变量age赋值。
时间: 2024-03-13 16:45:48 浏览: 9
好的,您的第一个问题是一个程序员要如何实现以下两个需求:
1. 如果方法入参为负数,则不给成员变量age赋值,并提示输入的年龄有误;
2. 如果方法入参为非负数,则给成员变量age赋值。
对于这个问题,我们可以先定义一个方法,用来接收年龄参数,并根据不同的情况进行处理。具体代码如下:
```java
public void setAge(int age) {
if (age < 0) {
System.out.println("输入的年龄有误!");
} else {
this.age = age;
}
}
```
在这个方法中,我们首先判断传入的年龄参数是否小于0,如果是,就直接输出提示信息。如果不是,就给成员变量age赋值。
在实际使用中,我们可以通过调用这个方法来设置年龄,例如:
```java
Person person = new Person();
person.setAge(20); // 设置年龄为20
person.setAge(-10); // 输出提示信息,不给age赋值
```
这样就可以实现上述两个需求了。
相关问题
1、定义异常类MyException继承自Exception类,其无参及有参的构造方法分别调用父类的无参及有参的构造方法,其中有参的构造方法的参数为字符串 2、定义类Student,内含: 私有的成员变量String类的name和int类的 age。与name和age对应的set和get成员方法。 3、在setAge()方法中,需要对age是否是负数进行判断,如果是负数,以“年龄不能为负数”字符串为参数创建异常对象并抛出 4、setAge()方法声明抛出一个异常MyException 5、定义测试类TestE,在其mainO方法中完成以下任务: 1)创建Student类的对象stu,调用stu对象的setName()方法给name赋值“张三”; 2)调用stu对象的setAgeO方法给age赋值-20,并利用try……catch异常捕获机制对其进行处理,显示异常信息:“年龄不能为负数”和“张三的年龄为:0岁”;
代码实现如下:
MyException.java
```
public class MyException extends Exception {
public MyException() {
super();
}
public MyException(String message) {
super(message);
}
}
```
Student.java
```
public class Student {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) throws MyException {
if (age < 0) {
throw new MyException("年龄不能为负数");
}
this.age = age;
}
public int getAge() {
return age;
}
}
```
TestE.java
```
public class TestE {
public static void main(String[] args) {
Student stu = new Student();
stu.setName("张三");
try {
stu.setAge(-20);
} catch (MyException e) {
System.out.println(e.getMessage());
} finally {
System.out.println(stu.getName() + "的年龄为:" + stu.getAge() + "岁");
}
}
}
```
输出结果:
```
年龄不能为负数
张三的年龄为:0岁
```
在上一个实验中,学生类创建的对象的年龄是可以随便赋值的,如果将age的值赋值为-30,显然违背了事实。为了解决这类问题,我们需要对类进行封装,防止外界对类中的成员变量随意访问。为了让同学们更好的掌握封装的概念,本实验将使用private关键字对成员变量name和age进行私有化,同时分别提供一个setName(String n)和setAge(int a)方法用于外界的访问,其中setAge(int a)中需要对age进行判断。 1) 编写测试类,将属性age的值设为-30,演示不合理现象。 2) 对Student类进行修改,将name和age属性使用private修饰,然后定义getName()、setName(String n)、getAge()和setAge(int a)四个对外访问name和age的方法。 3) 在setAge(int a)方法中对传入的参数进行检查,如果输入值为负数,则打印出“设置的年龄不合法”,如果不为负数,才将其设置为age属性的值。 4)对测试类进行修改,在main()方法中创建Student类的实例对象,通过调用对象的setName(String n)和setAge(int a)方法来设置的name属性和age属性值,并调用speak()方法。
1)测试类演示不合理现象:
```java
public class TestStudent {
public static void main(String[] args) {
Student stu = new Student();
stu.age = -30;
stu.speak();
}
}
```
运行结果:
```
我叫null,今年-30岁。
```
2)修改Student类,使用private修饰name和age属性,并提供对外访问的方法:
```java
public class Student {
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) {
if (age < 0) {
System.out.println("设置的年龄不合法");
} else {
this.age = age;
}
}
public void speak() {
System.out.println("我叫" + name + ",今年" + age + "岁。");
}
}
```
3)在setAge(int a)方法中添加对输入参数的判断,如果为负数则打印出“设置的年龄不合法”,否则才将其设置为age属性的值。
4)测试类修改如下:
```java
public class TestStudent {
public static void main(String[] args) {
Student stu = new Student();
stu.setName("小明");
stu.setAge(-30);
stu.speak();
stu.setAge(18);
stu.speak();
}
}
```
运行结果:
```
设置的年龄不合法
我叫小明,今年0岁。
我叫小明,今年18岁。
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)