【java作业3——类的定义】复数,连续子数组,最大素数

简介: 🍒 1 定义复数类作业内容:定义一个复数类Complex(数据成员:a,b表示复数a+bi).并配以合适的方法完成复数对象的生成、复数的运算(加、减、乘除),然后做一个主类测试它。

🍒 1 定义复数类

作业内容

定义一个复数类Complex(数据成员:a,b表示复数a+bi).并配以合适的方法完成复数对象的生成、复数的运算(加、减、乘除),然后做一个主类测试它。

运行截图

4e5053b2a19d4f4386428af066f5349e.png

代码

class FS {
    double a;  // 实数
    double b;  // 虚数
    // 1. 构造
    public FS(double a, double b) {
        this.a = a;
        this.b = b;
    }
    // 2. 格式化地打印出这个复数
    public void print() {
        System.out.printf("(%.2f, %.2f)\n", this.a, this.b);
    }
    // 3. 加法,return和
    public FS add(FS x) {
        return new FS(this.a + x.a, this.b + x.b);
    }
    // 4. 减法(谁减谁不用搞反了)
    public FS sub(FS x) {
        return new FS(this.a - x.a, this.b - x.b);
    }
    // 5. 乘法
    public FS mul(FS x) {
        return new FS(this.a * x.a - this.b * x.b, this.a * x.b + this.b * x.a);
    }
    // 6. 除法
    public FS div(FS x) {
        double fm = x.a * x.a + x.b * x.b;
        return new FS((this.a * x.a + this.b * x.b) / fm, (this.b * x.a - this.a * x.b) / fm);
    }
}
public class y4 {
    public static void main(String[] args) {
        FS x = new FS(1., 2.);
        FS y = new FS(3., 4.);
        y.add(x).print();
        y.sub(x).print();
        y.mul(x).print();
        y.div(x).print();
    }
}

🍓 2 连续子数组类

作业内容

模式识别)设计一个类:ThreeContinuousDigit,定位一组整型数组中连续出现3次或3次以上的子数组。这个类包含:arrayIndexs[](数字在原数组中的起始下标)、numbers、sunArrayNumber(有效子数组的个数)、原始数组int[] sorceArray。类中的实例方法如下定义:


Public ThreeContinuousDigit locationContinuousDigit();


然后编写主类测试ThreeContinuousDigit类。


注意:原数组在产生对象时传入;其它需要的方法自行定义

运行截图

22861f97b3d84015830cb9a6ee23d172.png

实现代码

public class zy4 
{
    public static void main(String[] args)
    {
        int[] a={1, 2, 2, 2, 3, 4, 4, 4, 4, 5};
        ThreeContinuousDigit d=ThreeContinuousDigit.locationContinuousDigit(a);
        System.out.printf("子数组个数:%d\n", d.sunArrayNumber);
        for(int i=0;i<d.sunArrayNumber;i++)
        {
            System.out.printf("首个数字下标:%d,连续长度:%d\n", d.arrayIndexs[i], d.numbers[i]);
        }
    }    
}
class ThreeContinuousDigit
{
    int arrayIndexs[];//每个连续子数组的下标
    int numbers[];//每个子数组的长度
    int sunArrayNumber;//连续子数组的个数
    public static ThreeContinuousDigit locationContinuousDigit(int[] a)
    {
        ThreeContinuousDigit d = new ThreeContinuousDigit();
        int[] arrayIndexs=new int[a.length];
        int[] numbers=new int[a.length];
        for(int i=0;i<a.length;)
        {
            int sl=0;//连续数字的长度
            for(int j=i;j<a.length;j++)
            {
                if(a[i]==a[j])sl++;
            }
            if(sl>=3)
            {
                arrayIndexs[d.sunArrayNumber]=i;
                numbers[d.sunArrayNumber]=sl;
                d.sunArrayNumber++;
            }
            i+=sl;
        }
        d.arrayIndexs=new int[d.sunArrayNumber];//不浪费空间
        d.numbers=new int[d.sunArrayNumber];
        for(int i=0;i<d.sunArrayNumber;i++)
        {
            d.arrayIndexs[i]=arrayIndexs[i];
            d.numbers[i]=numbers[i];
        }
        return d;
    }
}

🍅 3 最大素数类

作业内容

定义一个Location类,用于定位一个二维整型数组中最大素数及其位置。这个类包含数据域成员:row、column、maxPrimeValue、element[],类所需的方法有你自己决定。最后编写主类测试你的Location类。

运行截图

25bebe92fba64dd08fcd4be7f51a5e1e.png

实现代码

public class zy5
{
    public static void main(String[] args)
    {
        int[][] a={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
        Location l=new Location(a);
        System.out.printf("最大质数:%d,坐标:(%d,%d)\n",l.maxPrimeValue,l.row,l.column);
    }
}
class Location
{
    int row,column,maxPrimeValue;
    int[][] element;
    public Location(int[][] a)
    {
        this.element=a;
        this.maxPrimeValue=0;
        for(int i=0;i<a.length;i++)for(int j=0;j<a[0].length;j++)
        {
            boolean f=false;
            for(int k=2;k<=Math.sqrt(a[i][j]);k++)f=f||(a[i][j]%k==0);
            if(f==false)
            {
                this.maxPrimeValue=a[i][j]>this.maxPrimeValue?a[i][j]:this.maxPrimeValue;
                this.row=i;
                this.column=j;
            }
        }
    }
}


相关文章
|
26天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
44 8
|
1月前
|
Java 编译器
Java重复定义变量详解
这段对话讨论了Java中变量作用域和重复定义的问题。学生提问为何不能重复定义变量导致编译错误,老师通过多个示例解释了编译器如何区分不同作用域内的变量,包括局部变量、成员变量和静态变量,并说明了使用`this`关键字和类名来区分变量的方法。最终,学生理解了编译器在逻辑层面检查变量定义的问题。
Java重复定义变量详解
|
26天前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
59 1
|
1月前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
63 17
|
1月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
114 4
|
1月前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
58 2
|
1月前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
51 4
|
1月前
|
Java
在Java中定义一个不做事且没有参数的构造方法的作用
Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用super()来调用父类中特定的构造方法,则编译时将发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。
|
1月前
|
Java Android开发
Eclipse 创建 Java 类
Eclipse 创建 Java 类
26 0