会java算法的,来教一下小弟这个题目怎么写?
在以下复数类的基础上扩充乘法运算。publicclassComplexNumber{privatedoublex,y;//私有类变量publicComplexNumber...
在以下复数类的基础上扩充乘法运算。
public class ComplexNumber{
private double x, y; //私有类变量
public ComplexNumber(double real, double imaginary) {
x = real; y = imaginary;
}
public String toString() { return "{" + x + "," + y + "}"; }
/** 两复数相加 */
public static ComplexNumber add(ComplexNumber a, ComplexNumber b) {
return new ComplexNumber(a.x + b.x, a.y + b.y);
}
/** 本复数加上一个复数 */
public ComplexNumber add(ComplexNumber a) {
return new ComplexNumber(this.x + a.x, this.y+a.y);
}
/** 两复数相乘 */
public static ComplexNumber multiply(ComplexNumber a, ComplexNumber b) {
return new ComplexNumber(a.x*b.x - a.y*b.y, a.x*b.y + a.y*b.x);
}
/** 本复数乘上一个复数 */
public ComplexNumber multiply(ComplexNumber a) {
return new ComplexNumber(x*a.x - y*a.y, x*a.y + y*a.x);
}
}
编写一个测试程序调用以上复数类,实现以下求解调用,由命令行提供数据:
命令“java ComplexNumber + 2 3 4 5 ”main方法是要传数组参数,命令“java ComplexNumber + 2 3 4 5 ”传了长度为5的数组参数,意思是求 (2,3i)与(4,5i)之和.
命令“java ComplexNumber * 4 6 3 5 ”意思是求 (4,6i)与(3,5i)之积. 展开
public class ComplexNumber{
private double x, y; //私有类变量
public ComplexNumber(double real, double imaginary) {
x = real; y = imaginary;
}
public String toString() { return "{" + x + "," + y + "}"; }
/** 两复数相加 */
public static ComplexNumber add(ComplexNumber a, ComplexNumber b) {
return new ComplexNumber(a.x + b.x, a.y + b.y);
}
/** 本复数加上一个复数 */
public ComplexNumber add(ComplexNumber a) {
return new ComplexNumber(this.x + a.x, this.y+a.y);
}
/** 两复数相乘 */
public static ComplexNumber multiply(ComplexNumber a, ComplexNumber b) {
return new ComplexNumber(a.x*b.x - a.y*b.y, a.x*b.y + a.y*b.x);
}
/** 本复数乘上一个复数 */
public ComplexNumber multiply(ComplexNumber a) {
return new ComplexNumber(x*a.x - y*a.y, x*a.y + y*a.x);
}
}
编写一个测试程序调用以上复数类,实现以下求解调用,由命令行提供数据:
命令“java ComplexNumber + 2 3 4 5 ”main方法是要传数组参数,命令“java ComplexNumber + 2 3 4 5 ”传了长度为5的数组参数,意思是求 (2,3i)与(4,5i)之和.
命令“java ComplexNumber * 4 6 3 5 ”意思是求 (4,6i)与(3,5i)之积. 展开
4个回答
展开全部
import java.util.Scanner;
public class test{
public static void main(String [] args){
Scanner reader=new Scanner(System.in);
String code=reader.nextLine();
String temp[]=code.split(" ");
//System.out.print(code);
ComplexNumber a = new ComplexNumber(Integer.parseInt(temp[1]),Integer.parseInt(temp[2]));
ComplexNumber b = new ComplexNumber(Integer.parseInt(temp[3]),Integer.parseInt(temp[4]));
//System.out.print(aaa.toString());
if(temp[0].intern()=="*".intern())System.out.print(ComplexNumber.multiply(a,b));
else if(temp[0].intern()=="+".intern())System.out.print(ComplexNumber.add(a,b));
}
}
文件目录格式
CMD运行结果
展开全部
package test;
public class ComplexNumberTest {
public static void main(String[] args) {
/*//测试
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}*/
new ComplexNumberTest().translate(args);
}
/**
* 字符串数组分离符号和数值
*
* @param args
* 字符串
*/
public void translate(String[] args) {
//符号
String s = args[0];
double[] num = new double[4];
for (int i = 0; i < args.length - 1; i++) {
num[i] = Double.parseDouble(args[i + 1]);
}
ComplexNumber a = new ComplexNumber(num[0], num[1]);
ComplexNumber b = new ComplexNumber(num[2], num[3]);
calculate(s, a, b);
}
/**
* 复数计算
*
* @param s
* 计算符号
* @param a
* 复数a
* @param b
* 复数b
*/
public void calculate(String s, ComplexNumber a, ComplexNumber b) {
switch (s) {
case "+":
System.out.println(ComplexNumber.add(a, b));
break;
case "'*'":
System.out.println(ComplexNumber.multiply(a, b));
break;
default:
System.out.println("未有对应运算符号。");
}
}
}
在eclipse中输入参数,除*之外,都没有问题的,但这个*乘号是有问题的,会输出:
.classpath
.project
.settings
src
WebRoot
然后我又在命令行内输入,会有个编码问题,,,,gbk....
javac -encoding utf-8 test\类名
到此,你输入* 1 2 3 4 的*号还是有问题的!!它会输出包名啊!!!
没办法了,用‘*’代替吧。。。。。
over.!
看了下面的答案,我醉了。。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.Scanner;
public class ComplexNumber {
//private double xr,xi, yr,yi; // 私有类变量
//private char operator;
public ComplexNumber(double xr, double xi,double yr, double yi,char operator) {
if(operator=='+'){
add(xr, xi, yr, yi);
}else if(operator=='*'){
multiply(xr, xi, yr, yi);
}else {
System.out.println("输入的操作符有错");
}
}
/** 两复数相加 */
public void add(double xr, double xi,double yr, double yi) {
double x=xr+yr;
double y=xi+yi;
System.out.println(x+"+"+y+"i");
}
/** 两复数相乘 */
public void multiply(double xr, double xi,double yr, double yi) {
double x=xr*yr-xi*yi;
double y=xi*yr+xr*yi;
System.out.println(x+"+"+y+"i");
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
char operator=in.next().charAt(0);//args[0].charAt(0);
double xr=new Double(in.next());//args[1]
double xi=new Double(in.next());//args[2]
double yr=new Double(in.next());//args[3]
double yi=new Double(in.next());//args[4]
in.close();
new ComplexNumber(xr, xi, yr, yi, operator);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-11-14
展开全部
不好意思。我不会,不过建议你提高一些悬赏,不然没有人帮你看这个题目的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询