复数求模java程序_Java课程设计建立复数对象,公共方法有加减乘除求模

这是一个Java课程设计项目,旨在创建一个复数对象,包含加、减、乘、除和求模等公共方法,并实现了复数链表的增删查操作。项目还涉及从文本文件读取和导出复数链表,并使用多线程处理链表操作,确保线程安全。源代码中修复了若干错误并进行了改进,包括添加获取复数的成员方法和实现复数的模运算。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gifJava课程设计建立复数对象,公共方法有加减乘除求模

Java课程设计 1.建立复数对象,公共方法有加、减、乘、除、求模,重载toString()输出;考虑静态方法和动态方法。如有可能考虑操作符重载。 2.建立复数有序链表结构的集合(复数不能重复,按照模的大小排序),链表的操作有添加,删除,查找。 3.对上面的复数链表集合,做一个方法从文本文件读取复数添加到有序链表,另一个方法把链表导出到文本文件。注:文本文件的复数可以用逗号分隔。读取的文本文件的复数是无序的。 3.考虑多线程的处理,对链表操作的添加和删除加锁,设置最大集合数量,如果链表为空,不能删除,如果复数数量达到最大,不能添加。 源代码如下: import java.util.Scanner; public class fushu { public float a,b; //定义成员变量 fushu() //构造函数1 { } fushu(float x,float y) //构造函数2 { a=x;b=y; } public static void main(String[] args) //主函数 { System.out.println(“选择你要进行操作的序号:1.两个复数加;2.减;3.乘;4.除;5.求模;\n输出你的选择,按回车。“); Scanner in=new Scanner(System.in); //从键盘获得选择 int i=in.nextInt(); System.out.println(i); switch(i) { case 1: //加 { System.out.println(“第一个实部:“) float a1=in.nextFloat(); System.out.println(“第一个虚部:“); float b1=in.nextFloat(); fushu c1=new fushu(a1,b1); System.out.println(“第2个实部:“); float a2=in.nextFloat(); System.out.println(“第2个虚部:“); float b2=in.nextFloat(); fushu c2=new fushu(a2,b2); fushu m=jia(c1,c2); System.out.println(“结果为:“); print(m); break; } case 2: //减 { System.out.println(“第一个实部:“); float a1=in.nextFloat(); System.out.println(“第一个虚部:“); float b1=in.nextFloat(); fushu c1=new fushu(a1,b1); System.out.println(“第2个实部:“); float a2=in.nextFloat(); System.out.println(“第2个虚部:“); float b2=in.nextFloat(); fushu c2=new fushu(a2,b2); fushu m=jian(c1,c2); System.out.println(“结果为:“); print(m); } case 3: //乘 { System.out.println(“第一个实部:“); float a1=in.nextFloat(); System.out.println(“第一个虚部:“); float b1=in.nextFloat(); fushu c1=new fushu(a1,b1); System.out.println(“第2个实部:“); float a2=in.nextFloat(); System.out.println(“第2个虚部:“); float b2=in.nextFloat(); fushu c2=new fushu(a2,b2); fushu m=cheng(c1,c2); System.out.println(“结果为:“); print(m); } case 4: //除 { System.out.println(“第一个实部:“); float a1=in.nextFloat(); System.out.println(“第一个虚部:“); float b1=in.nextFloat(); fushu c1=new fushu(a1,b1); System.out.println(“第2个实部:“); float a2=in.nextFloat(); System.out.println(“第2个虚部:“); float b2=in.nextFloat(); fushu c2=new fushu(a2,b2); if(b2==0 break; } else { fushu m=chu(c1,c2); System.out.println(“结果为:“); print(m); break; } } case 5: //暂时为实现模运算方法 } } public static fushu jia(fushu c1,fushu c2) { //实现加运算方法 fushu c=new fushu(); c.a=c1.a+c2.a; c.b=c1.b+c2.b; return c; } public static void print(fushu c) //实现输出一个复数形式的方法 { if(c.a!=0) { if(c.b>0) System.out.println(c.a+“+“+c.b+“i“); // “a+bi” else if(c.b==0) System.out.println(c.a); //”a” else { System.out.println(c.a+“-“+(-c.b)+“i“); //”a-bi” } } else { if(c.b>0) System.out.println(c.b+“i“); //”bi” else if(c.b==0) System.out.println(c.a); //”0” else System.out.println(c.b+“i“); //”-bi” } } public static fushu jian(fushu c1,fushu c2) //减运算方法 { fushu c=new fushu(); c.a=c1.a-c2.a; c.b=c1.b-c2.b; return c; } public static fushu cheng(fushu c1,fushu c2) //乘运算方法 { fushu c=new fushu(); c.a=(c1.a*c2.a)-(c1.b*c2.b); c.b=c2.a*c1.b+c1.a*c2.b; return c; } public static fushu chu(fushu c1,fushu c2) //除运算方法 { fushu c=new fushu(); c.a=(c1.a*c2.a+c1.b*c2.b)/(c2.a*c2.a+c2.b*c2.b); c.b=(c2.a*c1.b-c1.a*c2.b)/(c2.a*c2.a+c2.b*c2.b); return c; } /*public static float mo(fushu c) //模运算,暂时不知如何根号运算 { float n= */ } 调式运行中遇到的错误及解决方法: 1.“ ushu.java:50: 需要 ) System.out.println(c.a+“-“(-c.b)+“i“);” 少了连接的“+”,添上。 2.“D:\java>javac fushu.java fushu.java:22: 已在 main(java.lang.String[]) 中定义 in Scanner in=new Scanner(System.in);” 不可多次重复定义,只定义一次即可。 3. fushu.java:33: 无法从静态上下文中引用非静态 方法 jia(fushu,fushu) fushu m=jia(c1,c2); fushu.java:35: 无法从静态上下文中引用非静态 方法 print(fushu) print(m); 在”jia”和”print”方法前加static. 程序存在的的一些问题及改进: 1.为实现模运算,查书得Math.sqrt()方法。 Switch部分获取输入的复数部分存在许多的代码重复,可以将获取复数写成一个单独的成员方法加以改进,在改变过程中,只需改变switch部分以及添加成员方法chushi(),其余成员方法无需改变,代码2如下: import java.util.Scanner; public class fushu2 { public float a,b; fushu2() { } fushu2(float x,float y) { a=x;b=y; } static fushu2 chushi() //添加的用于从键盘获得复数的方法 { float x,y; Scanner in=new Scanner(System.in); System.out.println(“实部a:“); x=in.nextFloat(); System.out.println(“虚部b:“); y=in.nextFloat(); fushu2 w=new fushu2(x,y); return w; } public static void main(String[] args) { System.out.println(“选择你要进行操作的序号:1.两个复数加;2.减;3.乘;4.除;5.求模;\n输出你的选择,按回车。“); Scanner in=new Scanner(System.in); int i=in.nextInt(); System.out.println(i); switch(i) { case 1: { System.out.println(“第1个虚数:“); fushu2 c1=chushi();//调用类方法,也可fushu2.chushi() System.out.println(“第2个虚数:“); fushu2 c2=chushi(); fushu2 m=jia(c1,c2); System.out.println(“结果为:“); print(m); break; } case 2: { System.out.println(“第1个虚数:“); fushu2 c1=chushi(); System.out.println(“第2个虚数:“); fushu2 c2=chushi(); fushu2 m=jian(c1,c2); System.out.println(“结果为:“); print(m); break; } case 3: { System.out.println(“第1个虚数:“); fushu2 c1=chushi(); System.out.println(“第2个虚数:“); fushu2 c2=chushi(); fushu2 m=cheng(c1,c2); System.out.println(“结果为:“); print(m); break; } case 4: { System.out.println(“第1个虚数:“); fushu2 c1=chushi(); System.out.println(“第2个虚数:“); fushu2 c2=chushi(); if(c2.b==0 break; } else { fushu2 m=chu(c1,c2); System.out.println(“结果为:“); print(m); break; } } case 5: { fushu2 c=chushi(); double t=mo(c); System.out.println(“该复数模为:“+t); break; } } } public static fushu2 jia(fushu2 c1,fushu2 c2) { fushu2 c=new fushu2(); c.a=c1.a+c2.a; c.b=c1.b+c2.b; return c; } public static void print(fushu2 c)//?? { if(c.a!=0) { if(c.b>0) System.out.println(c.a+“+“+c.b+“i“); else if(c.b==0) System.out.println(c.a); else { /*c.b=-c.b;*/ System.out.println(c.a+“-“+(-c.b)+“i“); } } else { if(c.b>0) System.out.println(c.b+“i“); else if(c.b==0) System.out.println(c.a); else System.out.println(c.b+“i“); } } public static fushu2 jian(fushu2 c1,fushu2 c2) { fushu2 c=new fushu2(); c.a=c1.a-c2.a; c.b=c1.b-c2.b; return c; } public static fushu2 cheng(fushu2 c1,fushu2 c2) { fushu2 c=new fushu2(); c.a=(c1.a*c2.a)-(c1.b*c2.b); c.b=c2.a*c1.b+c1.a*c2.b; return c; } public static fushu2 chu(fushu2 c1,fushu2 c2) { fushu2 c=new fushu2(); c.a=(c1.a*c2.a+c1.b*c2.b)/(c2.a*c2.a+c2.b*c2.b); c.b=(c2.a*c1.b-c1.a*c2.b)/(c2.a*c2.a+c2.b*c2.b); return c; } public static double mo(fushu2 c) //实现模运算的方法 { double n=Math.sqrt(c.a*c.a+c.b*c.b); return n; } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值