java - 如何在我的 Java 代码中找到问题?
问题描述
我正在尝试为我的 IT 课程做作业,我们刚刚开始编程。我们有 2 个班级,Main 和 Okej。这只是一个简单的代码,getter 和 setter 必须检查用户是否输入了正确的数字。但是 IF 语句不起作用。
package okej;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner program = new Scanner(System.in);
System.out.println("Please, type your Name.");
String name = program.nextLine();
System.out.println("Please, type your age.");
int age = program.nextInt();
System.out.println("Please, type your weight.");
double weight = program.nextDouble();
Okej you = new Okej(name, age, weight);
System.out.print(you);
}
}
package okej;
import java.util.Scanner;
public class Okej {
String name = "";
int age = 0;
double weight = 0.0;
public Okej(String name, int age, double weight) {
this.name = name;
this.age = age;
this.weight = weight;
}
public String getName() {
return name;
}
public void setName(String name) {
System.out.println("Okay, your name is " + name + ".");
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 18) {
if (age < 99) {
this.age = age;
System.out.println("Okay, your age is " + age + ".");
}
}
else {
System.out.println("You have put an invalid age for this program.");
System.out.println("Setting the number to 20.");
this.age = 20;
}
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
if (weight > 30) {
if (weight < 300) {
this.weight = weight;
System.out.println("Okay, your weight is " + weight + ".");
}
}
else {
System.out.println("You have put an invalid weight for this program.");
System.out.println("Setting the number to 50.");
this.weight = 50;
}
}
@Override
public String toString() {
return "Okay, your name is " + name + ", your age is " + age + ", and you weight "+ weight +".";
}
}
解决方案
它不起作用,因为验证您的输入的逻辑在内部setters
并且您没有调用它。您正在通过不执行任何验证的构造函数创建对象。您可以执行以下操作之一:
- 将验证代码移动到静态方法并在构造函数中调用它以在分配值之前进行验证
- 使用内部带有验证代码的构建器
- 创建空对象(使用默认构造函数)并使用 setter 设置将触发您的验证的值...
推荐阅读
- angular - 在哪里可以找到 Angular 源代码的单元测试?
- yarnpkg - 无法读取未定义的属性“pm2_env”
- mongodb - MongoDB查询具有匹配集的双嵌套数组
- python - 乘以可以是浮点数或整数的数字
- r - 即使在更改值并按下提交按钮后,也无法在 R Shiny 应用程序中获得输出。需要进行哪些更改?
- blazor - 如何在 Blazor 中使用 Substring 方法处理父子关系?
- php - 断言响应对象包含特定成功消息的最简单方法是什么?
- vue.js - Vuejs 不会在 Vuex 突变时更新 DOM
- html - 图像目标丢失后保留3D模型
- task - 整形手术对身体安全吗?