碎碎念:这次的习题练的是类和方法的构造,同时也有其他方面的知识,总之就是边来练题边学习知识吧...

目录

7-1 定义类 

7-2 构造方法

 7-3 构造方法

7-4 定义类与创建对象

7-5 设计BankAccount类 

7-6 学生类设计

7-7 正方形类

7-8 Circle类

7-9 Ring类设计


7-1 定义类 

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
                Scanner in = new Scanner(System.in);
                int a,b,c,d,e;
                a = in.nextInt();
                b = in.nextInt();
                c = in.nextInt();
                d = in.nextInt();
                e = in.nextInt();
                RR rr = new RR();
                double dd = rr.fun(a,b,c,d,e);
                System.out.printf("%.2f",dd);
    }
}
class RR{
    public double fun(int a,int b,int c, int d, int e) {
      return (a+b+c+d+e)/5.0;   	
    }

}

基础类和方法的定义

7-2 构造方法

public class Main {
    public Main(){
        System.out.println("构造方法一被调用了");
    }
    public Main(int x){
        this();		//调用Main()
        System.out.println("构造方法二被调用了");
    }
    public Main(boolean b){
        this(1);	//调用Main(int x)
        System.out.println("构造方法三被调用了");
    }
    public static void main(String[] args) {
        Main a = new Main(true);
    }
}

7-3 构造方法

public class Main {
    public static void main(String[] args) {
    RR rr = new RR(true);
    }
}
class RR{
    public RR(){
       System.out.print("8");
    }
    public RR(int x){
       this();
       System.out.print(".");
    }
    public RR(boolean b){
       this(1);
       System.out.print("00");
    }
}

7-4 定义类与创建对象

class Person {
	String name;
	int age;
	Person(String n,int a){
		name = n;
		age = a;
	}
}

public class Main{
	public static void main(String args[]) {
		  Person p1 = new Person("lili",19);
		  Person p2 = new Person("lucy",20);
		  System.out.println("this person is "+p1.name+ ",her age is "+p1.age);
		  System.out.print("this person is "+p2.name+  ",her age is "+p2.age);
	}
}

7-5 设计BankAccount类 

设计一个BankAccount类,这个类包括:

(1)一个int型的balance表时账户余额。

(2)一个无参构造方法,将账户余额初始化为0。

(3)一个带一个参数的构造方法,将账户余额初始化为该输入的参数。

(4)一个getBlance()方法,返回账户余额。

(5)一个withdraw()方法:带一个amount参数,并从账户余额中提取amount指定的款额。

(6)一个deposit()方法:带一个amount参数,并将amount指定的款额存储到该银行账户上。

提供main函数,构造一个账户对象,并对其进行存取款操作。

其中操作类型类型为1表示存款,2表示取款,每次操作后都打印余额

输入格式:

账户余额 操作个数 操作类型 操作金额

输出格式:

每次操作后的余额

输入样例:

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

0
4
1 100
1 200
2 100
2 100

结尾无空行

输出样例:

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

100
300
200
100

结尾无空行

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        BankAccount c = new BankAccount(m);
        int n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            int a = sc.nextInt();
            int money=sc.nextInt();
            switch (a) {
                case 1:
                    c.deposit(money);
                    break;
                case 2:
                    c.withdraw(money);
                    break;
                default:
                    break;
            }
            System.out.println(c.getBlance());
        }
    }
}

class BankAccount
{
    int balance;

    BankAccount()
    {
        this.balance=0;
    }
    BankAccount(int money)
    {
        this.balance=money;
    }
    int getBlance()
    {
        return balance;
    }
    void withdraw(int amount){
        if(amount<=this.balance)
            this.balance -= amount;
        
    }
    void deposit(int amount)
    {
        this.balance+=amount;
       
    }
}

switch语句和for语句的联动

7-6 学生类设计

设计一个类Student,并在Main类中生成Student类对象进行测试
1.对于Student类,设计私有属性name和age,并为每一个成员变量name和age设计其setXXX()和getXXX()方法,并对于setAge方法,如果age被赋值为<=6,则age值为7,其他为参数值。
2.对于Student类,设计无参构造方法,在构造方法中为age赋值为7,name赋值为“无名" 并添加语句System.out.println("无参构造方法");
3.设计方法public void display(),方法中显示该学生的姓名和年龄,显示格式为name:无名,age:8

Main类的main方法中,创建1个学生对象,然后调用display方法显示学生信息,接着通过键盘输入1个学生的姓名和年龄,调用display方法去显示学生信息。

输入格式:

在一行内输入学生的姓名和年龄

输出格式:

对每一组输入,输出学生的姓名和年龄。

输入样例:

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

tom 6

结尾无空行

jerry 8

结尾无空行

输出样例:

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

无参构造方法
name:无名,age:7
name:tom,age:7

结尾无空行

无参构造方法
name:无名,age:7
name:jerry,age:8

结尾无空行

import java.util.Scanner;

class Student{
    private String name;
    private int age;
    public void setname(String s){
        name = s;
    }
    public void setage(int i){
        if(i <= 6)
            age = 7;
        else
            age = i;
    }
    public Student(){
        name = "无名";
        age = 7;
        System.out.println("无参构造方法");
    }
    public void display(){
        System.out.println("name:"+name+",age:"+age);
    }
}
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        Student s = new Student();
        s.display();
        s.setname(in.next());
        s.setage(in.nextInt());
        s.display();
    }
}

代码的顺序:

        s.display();   //先display(),输出初始值
        s.setname(in.next());
        s.setage(in.nextInt());
        s.display();

7-7 正方形类

定义一个正方形类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

结尾无空行

//package jyc.test;

import java.util.Scanner;
import java.util.Arrays;
public class Main {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int x=input.nextInt();

        Square s1=new Square();
        System.out.println("s1:edge="+s1.getEdge());
        System.out.println("s1:area="+s1.getArea());

        Square s2=new Square();
        s2.setEdge(x);
        System.out.println("s2:edge="+s2.getEdge());
        System.out.println("s2:area="+s2.getArea());

    }
}

class  Square{
    private int edge;

    public Square(){
    this.edge=2;
        System.out.println("this is constructor method");
    }
    void  setEdge(int x){
        if(x<=0)
            this.edge=1;
        else
            this.edge=x;
    }
    int getEdge(){
        return this.edge;
    }

    public int getArea(){
        return this.edge*this.edge;
    }

}

7-8 Circle类

a 定义圆类Circle,其中包括:

  1. 成员变量定义 private int radius
  2. 方法定义 包括下列要求
  1. 定义无参构造方法 ,给radius赋值为2,并添加语句System.out.println("this is a constructor");
  2. 定义有参构造方法 ,接收用户给给radius赋值,如果用户输入半径为<=0,则让半径的值为2,并添加语句System.out.println("this is a constructor with para");
  3. 为radius半径添加setter方法,接收用户输入的半径,如果用户输入半径为<=0,则让半径的值为2
  4. 为radius半径添加getter方法,返回用户输入的半径
  5. 定义求面积方法public int gerArea(),π使用Math.PI代替,面积的结果强制转换为int返回
  6. 定义toString方法,public String toString( )方法体为:
    return "Circle [radius=" + radius + "]";

b定义Main类,在main方法中,完成下列操作

  1. .定义并创建Circle的第一个对象c1,并使用println方法输出c1
  2. 求c1的面积并输出
  3. 定义并创建Circle的第一个对象c2,并使用println方法输出c2
  4. 从键盘接收整数半径,并赋值给c2的半径,使用println方法输出c2
  5. 求c2的面积并输出
  6. 从键盘接收整数半径,并创建Circle的第三个对象c3,并将用户输入整数半径通过有参构造方法传递给出c3,使用println方法输出c3
  7. 求c3的面积并输出

### 输入格式: 从键盘输入一个整数半径

输出格式:

分别输出c1和c2对象的信息

输入样例:

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

4
5

结尾无空行

-4
-2

结尾无空行

输出样例:

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

this is a constructor
Circle [radius=2]
c1:area=12
this is a constructor
Circle [radius=2]
Circle [radius=4]
c2:area=50
this is a constructor with para
Circle [radius=5]
c3:area=78

结尾无空行

this is a constructor
Circle [radius=2]
c1:area=12
this is a constructor
Circle [radius=2]
Circle [radius=2]
c2:area=12
this is a constructor with para
Circle [radius=2]
c3:area=12

结尾无空行

import java.util.Scanner;

class Circle{
	private int radius;
	public Circle(){
		radius = 2;
		System.out.println("this is a constructor");
	}
	public Circle(int r){
		if(r <= 0)
			radius = 2;
		else 
			radius = r;
		System.out.println("this is a constructor with para");
	}
	public void setter(int r){
		if(r <= 0)
			radius = 2;
		else 
			radius = r;
	}
	public int getter(){
		return radius;
	}
	public int getArea(){
		double A = radius*radius*Math.PI;
		return (int)A;
	}
	public String toString(){
		return "Circle [radius=" + radius + "]";
	}
}

public class Main{
	public static void main(String[] args){
		Scanner in = new Scanner(System.in);
		Circle c1 = new Circle();
		System.out.println(c1.toString());
		System.out.println("c1:area="+c1.getArea());
		Circle c2 = new Circle();
		System.out.println(c2.toString());
		c2.setter(in.nextInt());
		System.out.println(c2.toString());
		System.out.println("c2:area="+c2.getArea());
		Circle c3 = new Circle(in.nextInt());
		System.out.println(c3.toString());
		System.out.println("c3:area="+c3.getArea());
	}
}

7-9 Ring类设计

编写一个圆环类Ring的Java程序。
a定义圆环类的2个数据成员,分别是内半径innerRadius,外半径outerRadius,这些属性通过get和set方法进行封装。
b 定义圆环类有参构造方法Ring(int innerRadius,int outerRadius),在有参构造方法中加入System.out.println("constructor");
c完成无参构造方法Ring(),要求在无参构造方法中使用this调用有参构造方法给两个半径赋值(外半径赋值3,内半径赋值1)
d 圆环类中定义 public int getArea()方法可以返回其面积。面积求出后强制转换为整型值返回,π使用Math.PI表示。

在Main类中先生成一个圆环类对象,这个圆环的两个半径通过键盘读入,调用求面积方法求出面积后,输出面积。
然后再次定义一个圆环对象,调用无参构造方法,调用求面积方法求出面积后,输出面积。

输入格式:

输入在一行中先给出内半径,再给出外半径。

输出格式:

在一行中输出圆环的面积。

输入样例:

在这里给出一组输入。先是内半径,然后是外半径,例如:

1   2

结尾无空行

输出样例:

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

constructor
9
constructor
25

结尾无空行

import java.awt.*;
import java.util.*;
import javax.swing.JPanel;

import java.io.*;

class Ring {
	public double innerRadius;
	public double outerRadius;

	public Ring() {
		this(1, 3);
	}

	public Ring(double innerRadius, double outerRadius) {
	//	super();
		this.innerRadius = innerRadius;
		this.outerRadius = outerRadius;
		System.out.println("constructor");
	}

	public double getInnerRadius() {
		return innerRadius;
	}

	public void setInnerRadius(double innerRadius) {
		this.innerRadius = innerRadius;
	}

	public double getOuterRadius() {
		return outerRadius;
	}

	public void setOuterRadius(double outerRadius) {
		this.outerRadius = outerRadius;
	}

	public int getArea() {
		return (int) (Math.PI * (this.outerRadius * this.outerRadius - this.innerRadius * this.innerRadius));
	}

}

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		Ring r1 = new Ring(scan.nextDouble(), scan.nextDouble());
		System.out.println(r1.getArea());
		Ring r2 = new Ring();
		System.out.println(r2.getArea());
	}
}

在无参构造方法中使用this调用有参构造方法给两个半径赋值(外半径赋值3,内半径赋值1)

this(1,3)