Java实验(2)类的创建与封装实验

本文介绍了Java编程的基础概念,包括类的声明、构造方法的使用、成员变量和方法的调用,以及对象的创建。通过实例展示了如何判断素数、比较大小、检查字符串相等,以及创建学生和狗类对象。同时,讲解了如何实现复数类的加法和减法操作,并设计了一个计算长方体面积和体积的静态方法。此外,还提出了一种统计类对象数量的实现方式。
摘要由CSDN通过智能技术生成

一、实验目的:
1.掌握类的声明和创建,掌握构造方法的定义和使用。
2.掌握成员变量和方法的定义和调用。
3.掌握对象的创建、实例或类成员变量和方法的引用。
4.掌握包的使用和导入,掌握Import语句的使用。
5.掌握访问权限的作用范围。

1(题目编号1038)、定义Prime类中的静态方法prime。此方法功能判断输入参数是否是素数。如何是素数返回true,否则返回false再main方法中调用prime静态方法,然后根据返回结果进行输出,如果返回true,则输出YES,否则输出NO(提示:。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数(质数);否则称为合数)。

import java.util.Scanner;
class Prime{
    // Write your own code
    public static String prime(int a){
        int i;
        for(i=2;i<a;i++)
            if(a%i==0){
                return "false";
            }
        return "true";
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        // Write your own code
        if(n==1){
            System.out.println("NO");
            return;
        }
        String s=Prime.prime(n);
        if(s.equals("true"))
            System.out.println("YES");
        else
            System.out.println("NO");
    }
}

2(题目编号1039)、创建一个类,为该类定义三个构造函数,从键盘输入两个int值,三个double值,两个字符串,分别执行下列操作:
(1)传递两个整数值并找出其中较大的一个值
(2)传递三个double值并求出其乘积
(3)传递两个字符串值并检查其是否相同
(4)在main方法中测试构造函数的调用。

import java.util.*;
class Check {
    //write your code here
    Check(int a, int b) {
        if(a>=b)
        System.out.println("Larger value: "+a);
        else
            System.out.println("Larger value: "+b);
    }
    Check(double a, double b, double c) {
        System.out.println("a*b*c = "+a*b*c);
    }

    Check(String a,String b){
        if(a.equals(b))
            System.out.println("Are equal: true");
        else
            System.out.println("Are equal: false");
    }


}

public class Main {
    public static void main(String args[]) {
        //write your code here
        Scanner in=new Scanner(System.in);
        int a,b;
        double c,d,e;
        String f,g;
        a=in.nextInt();
        b=in.nextInt();
        Check check1=new Check(a,b);
        c=in.nextDouble();
        d=in.nextDouble();
        e=in.nextDouble();
        Check check2=new Check(c,d,e);
        f=in.next();
        g=in.next();
        Check check3=new Check(f,g);
    }
}

3(题目编号1044)、写一个学生类输入和输出学生的姓名,年龄和学号,并测试。输出语句为:System.out.println(“Name:”+stu.name + " Age:" + stu.getAge() + " No:" + stu.no);根据Main类中的代码定义方法。

import java.util.Scanner;
class Student{
    Scanner in=new Scanner(System.in);
    String name;
    int age;
    public String getName(){
             String name=in.next();
             return name;
    }
    public void setName(String name){
        System.out.print(name);
    }
    public int getAge(){
        int age=in.nextInt();
        return age;
    }
    public void setAge(int age){
        System.out.print(age);
    }
}

public class Main {
    public static void main(String[] args) {
        Student a=new Student();
        a.name=a.getName();
        a.age=a.getAge();
        System.out.print("该生姓名:");
        a.setName(a.name);
        System.out.print(",年龄:");
        a.setAge(a.age);
    }
}

4(题目编号1051)、编写一个Dog类,其中的私有成员包括,name,color,age。请使用get,set方法访问私有变量。Dog类的无参构造方法,name=dog1,color=white,age=1。有参构造方法name,color,age从键盘上输入。请在主类中,创建dog1,用无参构造方法,dog2为有参构造方法。输出语句为:System.out.println(“name=” + d1.getName() + “,color=” +d1.getcolor()+",age="+d1.getAge());

import java.util.Scanner;
class Dog{
    private String name,color;
    private int age;
    public Dog(){

    }
    public Dog(String name,String color,int age){
        this.name=name;
        this.color=color;
        this.age=age;
    }
    public String getName(){
        return name;
    }
    public String getcolor(){
        return color;
    }
    public int getAge(){
        return age;
    }
    public void setName(String name){
        this.name=name;
    }
    public void setColor(String color){
        this.color=color;
    }
    public void setAge(int age){
        this.age=age;
    }
}

public class Main {
    public static void main(String[] args) {
        //write code here
        int age;
        String name,color;
        Scanner in=new Scanner(System.in);
        Dog d1=new Dog("dog1","white",1);
        Dog d2=new Dog();
        name=in.next();
        color=in.next();
        age=in.nextInt();
        d2.setAge(age);
        d2.setColor(color);
        d2.setName(name);
        System.out.println("name=" + d1.getName() + ",color=" +d1.getcolor()+",age="+d1.getAge());
        System.out.println("name=" + d2.getName() + ",color=" +d2.getcolor()+",age="+d2.getAge());
    }

}

5(题目编号7201)、定义一个 point类,该类具有两个构造方法。按顺序实现下属操作:(1)定义一个point对象A,用参数(x,y)初始化。(x,y从键盘输入)
(2)定义一个point类的对象B,用A初始化B。
(3)输出B.GetX()。
(4)调用fun1(),对象B作为fun1的实参。
(5)执行 B=fun2()。
(6)输出 B.GetX()。

import java.util.Scanner;
class Point {

    private  int x;
    private  int y;

    public Point(int xx,int yy)    //构造方法
    {
        this.x=xx;
        this.y=yy;
    }
    public int getX() {
        return x;
    }
    public int getY() {
        return y;
    }
    //write your code

    public static void fun1(Point p){
        System.out.println(p.getX());
    }

    public static Point fun2(){
        Point A =new Point(1,2);
        return A;
    }

}
public class Main{
    public static void main(String[] args) {
        //write your code
        Scanner in=new Scanner(System.in);
        int x=in.nextInt();
        int y=in.nextInt();
        Point A=new Point(x,y);
        Point B=A;
        System.out.println(B.getX());
        A.fun1(B);
        B=A.fun2();
        System.out.println(B.getX());
    }

}

6(题目编号7202)、定义并实现一个复数类Complex,要求实现复数的加法和减法。类拥有两个成员变量a和b,分别代表复数的实部和虚部。类有默认构造方法(a和b的默认值为0),也有拷贝构造方法(参数为复数类对象的引用)。另外还应该有一个Print方法打印复数,打印格式为a+bi,若实部虚部都为0,则输出0。两个复数的实部、虚部在main方法中由键盘输入

import java.util.*;
public class Main{
    public static void main(String[] args) {
    	int m,n;    //第一个数的实部和虚部
		int p,q;    //第二个数的实部和虚部
		Scanner scanner =new Scanner(System.in);
		m=Integer.parseInt(scanner.next());
		n=Integer.parseInt(scanner.next());
		p=Integer.parseInt(scanner.next());
		q=Integer.parseInt(scanner.next());
		Complex t =new Complex(m,n);
		Complex s =new Complex(t);
		Complex r=new Complex(p,q);
	    (s.Add(r)).Print();
	    (t.Sub(r)).Print();
	}
}
// Write your own code
class Complex {
    int a, b;

    public Complex(int a, int b) {
        this.a = a;
        this.b = b;
    }

    public Complex(Complex t) {
        this.a = t.a;
        this.b = t.b;
    }

    public Complex Add(Complex r) {
        this.a = this.a + r.a;
        this.b = this.b + r.b;
        return this;
    }

    public Complex Sub(Complex r) {
        this.a = this.a - r.a;
        this.b = this.b - r.b;
        return this;
    }

    public void Print() {
        if (this.a == 0 && this.b == 0)
            System.out.println("0");
        else
            System.out.println(this.a + " " + this.b + "i");
    }
}

7(题目编号1342)、定义一个计算类,计算长方体的面积和体积,要求用静态方法完成。

package com.test5.io;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x, y, z;
        x = sc.nextInt();
        y = sc.nextInt();
        z = sc.nextInt();
        Cube.volume(x, y, z);
    }
}

class Cube {
    public static void volume(int x, int y, int z) {
        System.out.println("面积=" + (x * y + x * z + y * z) + " 体积=" + x * y * z);
    }
}

8(题目编号7203)、编写一个类ObjectCounter,用来统计程序中目前存在多少个该类的对象。测试代码已经在主函数中写出。注意:
(1) 构造方法生成一个类对象
(2) 静态成员的定义与调用

import java.util.*;
class ObjectCounter {
//write your code here
 private static int i=0;
    ObjectCounter(){
        i++;
    }
    public static int getCount(){
        return i;
    }

}

public class Main {

    public static void main(String[] args) {
	    Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		for(int i=0;i<n;i++){
			ObjectCounter str1 = new ObjectCounter();
		}
		System.out.println(ObjectCounter.getCount());
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小绵杨Yancy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值