碎碎念:这次的习题练的是类和方法的构造,同时也有其他方面的知识,总之就是边来练题边学习知识吧...
目录
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,在次类中包括写内容:
- 定义成员变量边长private int edge;
- 定义方法:包括构造方法,setter getter方法,求面积方法等,要求如下所示:
- 定义正方形类的构造方法:在构造方法中给edge赋值为2,并添加System.out.println("this is constructor method");
- 为成员变量edge设置set方法,用来接收用户给edge的值,如果用户给的值<=0,则设置edge值为1
- 为成员变量edge设置get方法,用来返回edge的值
- 完成求面积方法,得到正方形的面积: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,其中包括:
- 成员变量定义 private int radius
- 方法定义 包括下列要求
- 定义无参构造方法 ,给radius赋值为2,并添加语句System.out.println("this is a constructor");
- 定义有参构造方法 ,接收用户给给radius赋值,如果用户输入半径为<=0,则让半径的值为2,并添加语句System.out.println("this is a constructor with para");
- 为radius半径添加setter方法,接收用户输入的半径,如果用户输入半径为<=0,则让半径的值为2
- 为radius半径添加getter方法,返回用户输入的半径
- 定义求面积方法public int gerArea(),π使用Math.PI代替,面积的结果强制转换为int返回
- 定义toString方法,public String toString( )方法体为:
return "Circle [radius=" + radius + "]";
b定义Main类,在main方法中,完成下列操作
- .定义并创建Circle的第一个对象c1,并使用println方法输出c1
- 求c1的面积并输出
- 定义并创建Circle的第一个对象c2,并使用println方法输出c2
- 从键盘接收整数半径,并赋值给c2的半径,使用println方法输出c2
- 求c2的面积并输出
- 从键盘接收整数半径,并创建Circle的第三个对象c3,并将用户输入整数半径通过有参构造方法传递给出c3,使用println方法输出c3
- 求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)