PTA正方形类

定义一个正方形类square,在次类中包括写内容:

  1. 定义成员变量边长private int edge;
  2. 定义方法:包括构造方法,setter getter方法,求面积方法等,要求如下所示:
    1. 定义正方形类的构造方法:在构造方法中给edge赋值为2,并添加System.out.println("this is constructor method");
    2. 为成员变量edge设置set方法,用来接收用户给edge的值,如果用户给的值<=0,则设置edge值为1
    3. 为成员变量edge设置get方法,用来返回edge的值
    4. 完成求面积方法,得到正方形的面积:public int getArea()

定义类Main,并在main方法中, 1.首先创建正方形对象s1,然后通过getEdge()方法输出edge的值,然后调用getArea方法求出s1的面积并输出
2.创建正方形对象s2,并通过键盘输入s2对象的边的值,然后通过getEdge()方法输出edge的值,然后调用getArea方法求出s1的面积并输出

输入格式:

输入在一行中给出边的值。

输出格式:

输出s1对象的边、输出s1对象的面积
输出s2对象的边、s2对象的面积

输入样例:

在这里给出一组输入。例如:

3
-5

输出样例:

在这里给出相应的输出。例如:

this is constructor method
s1:edge=2
s1:area=4
this is constructor method
s2:edge=3
s2:area=9
this is constructor method
s1:edge=2
s1:area=4
this is constructor method
s2:edge=1
s2:area=1

代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Square square1 = new Square();
        System.out.println("s1:edge="+square1.getEdge());
        System.out.println("s1:area="+square1.getArea());

    Scanner sc = new Scanner(System.in);
    Square square2 = new Square();
    square2.setEdge(sc.nextInt());
    System.out.println("s2:edge="+square2.getEdge());
    System.out.println("s2:area="+square2.getArea());

}

}

class Square{
    private int edge;

public Square() {
    System.out.println("this is constructor method");
    this.edge = 2;
}
public int getArea(){
    return this.edge*this.edge;
}
public int getEdge() {
    return edge;
}



public void setEdge(int edge) {
    if(edge<=0){
        this.edge = 1;
    }else{
        this.edge = edge;
    }

}

}

代码详解:

import java.util.Scanner;

// 导入 java.util 包中的 Scanner 类,Scanner 类用于从控制台读取用户输入

public class Main {

// 定义一个公共类 Main,Java 程序的入口必须在一个类中,这里 Main 类是程序的入口类
    public static void main(String[] args) {

在 Java 程序中, args  是 main  方法的参数, String[] args  表示一个字符串类型的数组,称为命令行参数数组。

// 定义程序的主方法,Java 程序从这里开始执行,args 是命令行参数数组.
        Square square1 = new Square();

// 创建一个 Square 类的对象 square1,调用 Square 类的构造方法来初始化对象
        System.out.println("s1:edge="+square1.getEdge());

// 输出 square1 的边长,通过调用 getEdge 方法获取边长
        System.out.println("s1:area="+square1.getArea());

// 输出 square1 的面积,通过调用 getArea 方法计算并获取面积

        Scanner sc = new Scanner(System.in);

// 创建一个 Scanner 对象 sc,用于读取控制台输入,System.in 表示标准输入流(即键盘输入)
        Square square2 = new Square();

// 创建另一个 Square 类的对象 square2,再次调用 Square 类的构造方法
        square2.setEdge(sc.nextInt());

// 从控制台读取一个整数,并通过 setEdge 方法设置 square2 的边长
        System.out.println("s2:edge="+square2.getEdge()); // 输出 square2 的边长
        System.out.println("s2:area="+square2.getArea()); // 输出 square2 的面积
    }
}

 

class Square{

// 定义一个 Square 类,用于表示正方形
    private int edge;

// 声明一个私有成员变量 edge,表示正方形的边长,私有变量只能在本类中访问

    public Square() {

// 定义 Square 类的构造方法:

结构: public Square() {... }  。构造方法的名称与类名相同,没有返回值类型(也不能写 void ),这里访问修饰符是 public  表示可以被外部访问。

用法:在使用 new Square()  创建 Square  类的对象时自动调用,用于对新创建的对象进行初始化操作,比如在该方法中输出提示信息以及给成员变量 edge  赋初始值。
        System.out.println("this is constructor method");

// 输出提示信息,表示正在调用构造方法
        this.edge = 2;

// 将 edge 初始化为 2,this 关键字表示当前对象
    }

当执行 Square square1 = new Square();  这行代码时,就会调用上述 Square  类的构造方法。构造方法首先输出提示信息 this is constructor method ,然后将 edge  成员变量初始化为 2 。也就是说,在创建 square1  对象的同时, square1  对象的 edge  成员变量就被赋值为 2  了,完成了对对象的初始化操作。

    public int getArea(){

// 定义一个公共方法 getArea,用于计算并返回正方形的面积:

结构: public int getArea() {... }  。 public  表示公共可访问, int  是返回值类型,表示该方法返回一个整数,方法名是 getArea 。

用法:用于计算并返回正方形的面积,在 main  方法中通过对象(如 square1.getArea() )调用该方法获取正方形的面积并进行输出。


        return this.edge*this.edge;

this  关键字表示当前对象, this.edge  指的是当前对象中名为 edge  的成员变量,代表正方形的边长。

// 返回边长的平方,即正方形的面积
    }

    public int getEdge() {

// 定义一个公共方法 getEdge,用于获取正方形的边长

结构: public int getEdge() {... }  。 public  修饰表示公共, int  是返回值类型,返回私有成员变量 edge  的值。

用法:用于获取正方形的边长,在 main  方法中通过对象(如 square1.getEdge() )调用该方法获取边长并输出。
        return edge;

// 返回私有成员变量 edge 的值
    }

    public void setEdge(int edge) {

// 定义一个公共方法 setEdge,用于设置正方形的边长

结构: public void setEdge(int edge) {... }  。 public  表示公共可访问, void  表示没有返回值,方法接收一个 int  类型的参数 edge 。

用法:用于设置正方形的边长,在 main  方法中通过对象(如 square2.setEdge(sc.nextInt()) )调用该方法,传入一个整数值来设置正方形的边长,并且方法内部会对传入的值进行判断和处理。

结构: Scanner  类是 Java 标准库中用于获取用户输入的类, nextInt  方法是 Scanner  类的一个实例方法。当你创建了一个 Scanner  类的对象(例如代码中的 sc ,即 Scanner sc = new Scanner(System.in);  所创建的对象)后,就可以通过该对象来调用 nextInt  方法,形式为 对象名.nextInt() ,在 nextInt  方法的括号内不需要传入参数(即该方法没有形参),它会从输入流中读取数据并进行处理。

用法: nextInt  方法主要的作用是从标准输入流( System.in ,通常对应键盘输入)中读取一个整数类型的数据。在上述代码的 main  方法中,先创建了 Scanner  对象 sc ,通过 sc.nextInt()  来等待用户在控制台输入一个整数,输入的整数会被 nextInt  方法获取并返回。返回的整数会作为参数传递给 square2  对象的 setEdge  方法(即 square2.setEdge(sc.nextInt()); ),从而实现对 square2  这个正方形对象边长的设置操作。也就是说, nextInt  方法起到了获取用户输入整数,并为后续程序处理提供数据的关键作用
        if(edge<=0){ // 如果传入的边长小于等于 0
            this.edge = 1; // 将边长设置为 1
        }else{ // 否则
            this.edge = edge; // 将边长设置为传入的值
        }
    }
}


创建正方形  s2  比  s1  多了  Scanner sc = new Scanner(System.in);  这一步,是因为它们设置边长的方式不同。
 
对于正方形  s1 ,在创建它的时候,通过调用  Square  类的构造方法  public Square() { System.out.println("this is constructor method"); this.edge = 2; } ,将边长默认初始化为  2 ,不需要从外部获取边长数据,所以不需要使用  Scanner  类来读取输入。
 
而对于正方形  s2 ,希望根据用户从控制台输入的数值来设置其边长。 Scanner  类是 Java 中用于从输入流(如控制台输入  System.in )读取数据的工具类, Scanner sc = new Scanner(System.in);  创建了一个  Scanner  对象  sc  后,就可以通过调用  sc  的相关方法(如  nextInt() )来读取用户输入的整数,然后将这个整数作为边长值传递给  square2  的  setEdge  方法( square2.setEdge(sc.nextInt()); ),从而实现根据用户输入来动态设置  s2  边长的功能。
 
简单来说,这一步是为了实现从外部(控制台)获取数据来设置正方形  s2  的边长,而  s1  不需要这样的外部输入,采用的是默认初始化边长的方式。


在面向对象编程中,将 Square square1 = new Square(); 这行创建对象的代码和 Square 类的构造方法的代码不写在一起,体现了封装的原则,即对象的内部实现细节(构造方法)对外部是隐藏的,外部只需要通过特定的方式( new 关键字)来创建对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值