🍒 1 定义复数类
作业内容:
定义一个复数类Complex(数据成员:a,b表示复数a+bi).并配以合适的方法完成复数对象的生成、复数的运算(加、减、乘除),然后做一个主类测试它。
运行截图:
代码:
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类。
注意:原数组在产生对象时传入;其它需要的方法自行定义
运行截图:
实现代码:
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类。
运行截图:
实现代码:
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; } } } }