复数与使用 HashSet

huangapple go评论104阅读模式
英文:

Complex numbers with using HashSet

问题

以下是翻译好的部分:

  1. import java.lang.Math;
  2. public class Complex {
  3. double dReal, dImaginary;
  4. // 构造方法
  5. public Complex() {}
  6. public Complex(double dReal, double dImaginary) {
  7. this.dReal = dReal;
  8. this.dImaginary = dImaginary;
  9. }
  10. // 将复数转换为字符串
  11. public String toString() {
  12. if (dImaginary >= 0)
  13. return dReal + "+" + dImaginary + "i";
  14. else
  15. return dReal + "-" + -dImaginary + "i";
  16. }
  17. // ================================================================
  18. // 复数运算
  19. // 计算两个复数的和 cA + cB
  20. public Complex Add(Complex cB) {
  21. Complex sum = new Complex();
  22. sum.dReal = dReal + cB.dReal;
  23. sum.dImaginary = dImaginary + cB.dImaginary;
  24. return (sum);
  25. }
  26. // 计算两个复数的差 cA - cB
  27. public Complex Sub(Complex cB) {
  28. Complex diff = new Complex();
  29. diff.dReal = dReal - cB.dReal;
  30. diff.dImaginary = dImaginary - cB.dImaginary;
  31. return (diff);
  32. }
  33. // 计算两个复数的乘积 cA * cB
  34. public Complex Mult(Complex cB) {
  35. Complex prod = new Complex();
  36. prod.dReal = dReal * cB.dReal - dImaginary * cB.dImaginary;
  37. prod.dImaginary = dImaginary * cB.dReal + dReal * cB.dImaginary;
  38. return (prod);
  39. }
  40. // 计算两个复数的除法 cA / cB
  41. public Complex Div(Complex cB) {
  42. Complex div = new Complex();
  43. double dR, dDen;
  44. if (Math.abs(cB.dReal) >= Math.abs(cB.dImaginary)) {
  45. dR = cB.dImaginary / cB.dReal;
  46. dDen = cB.dReal + dR * cB.dImaginary;
  47. div.dReal = (dReal + dR * dImaginary) / dDen;
  48. div.dImaginary = (dImaginary - dR * dReal) / dDen;
  49. } else {
  50. dR = cB.dReal / cB.dImaginary;
  51. dDen = cB.dImaginary + dR * cB.dReal;
  52. div.dReal = (dR * dReal + dImaginary) / dDen;
  53. div.dImaginary = (dR * dImaginary - dReal) / dDen;
  54. }
  55. return (div);
  56. }
  57. // ================================================================
  58. // 在 Complex 类中执行练习方法
  59. public static void main(String args[]) {
  60. // 设置并打印两个复数
  61. Complex cA = new Complex(1.0, 2.0);
  62. Complex cB = new Complex(3.0, 4.0);
  63. System.out.println("cA = " + cA.toString());
  64. System.out.println("cB = " + cB.toString());
  65. // 输出
  66. Complex cC = cA.Add(cB);
  67. System.out.println("复数 cA + cB = " + cC.toString());
  68. Complex cD = cA.Sub(cB);
  69. System.out.println("复数 cA - cB = " + cD.toString());
  70. Complex cE = cA.Mult(cB);
  71. System.out.println("复数 cA * cB = " + cE.toString());
  72. Complex cF = cA.Div(cB);
  73. System.out.println("复数 cA / cB = " + cF.toString());
  74. }
  75. }

请注意,此处提供的翻译可能会因为代码格式问题而导致部分内容错位,但整体翻译是准确的。如果您需要准确的代码,请将上述翻译内容复制到代码编辑器中,然后进行适当的格式修复。

英文:

The university has given the task: To implement methods of adding, subtracting, multiplying and dividing objects. Create a set (Hashset) of dimension n from complex coordinates. Transfer it to a method that completes/multiplies its elements.
I realize the methods of operations themselves, but I cannot understand why hashset is needed and how to implement it in code. I read the articles, but I still didn’t understand how to apply the class for realization.

Sorry for my broken english

  1. import java.lang.Math;
  2. public class Complex {
  3. double dReal, dImaginary;
  4. // Constructor methods
  5. public Complex() {}
  6. public Complex( double dReal, double dImaginary ) {
  7. this.dReal = dReal;
  8. this.dImaginary = dImaginary;
  9. }
  10. // Convert complex number to a string
  11. public String toString() {
  12. if (dImaginary >= 0)
  13. return dReal + "+" + dImaginary + "i";
  14. else
  15. return dReal + "-" + -dImaginary + "i";
  16. }
  17. // ================================================================
  18. // Complex number arithmetic
  19. // Compute sum of two complex numbers cA + cB
  20. public Complex Add(Complex cB ) {
  21. Complex sum = new Complex();
  22. sum.dReal = dReal + cB.dReal;
  23. sum.dImaginary = dImaginary + cB.dImaginary;
  24. return (sum);
  25. }
  26. // Compute difference of two complex numbers cA - cB
  27. public Complex Sub( Complex cB ) {
  28. Complex diff = new Complex();
  29. diff.dReal = dReal - cB.dReal;
  30. diff.dImaginary = dImaginary - cB.dImaginary;
  31. return (diff);
  32. }
  33. // Compute product of two complex numbers cA * cB
  34. public Complex Mult( Complex cB ) {
  35. Complex prod = new Complex();
  36. prod.dReal = dReal*cB.dReal - dImaginary*cB.dImaginary;
  37. prod.dImaginary = dImaginary*cB.dReal + dReal*cB.dImaginary;
  38. return (prod);
  39. }
  40. // Compute divisor of two complex numbers cA / cB
  41. public Complex Div( Complex cB ) {
  42. Complex div = new Complex();
  43. double dR, dDen;
  44. if(Math.abs( cB.dReal ) >= Math.abs( cB.dImaginary )) {
  45. dR = cB.dImaginary/cB.dReal;
  46. dDen = cB.dReal + dR*cB.dImaginary;
  47. div.dReal = (dReal + dR*dImaginary)/dDen;
  48. div.dImaginary = (dImaginary - dR*dReal)/dDen;
  49. } else {
  50. dR = cB.dReal/cB.dImaginary;
  51. dDen = cB.dImaginary + dR*cB.dReal;
  52. div.dReal = (dR*dReal + dImaginary)/dDen;
  53. div.dImaginary = (dR*dImaginary - dReal)/dDen;
  54. }
  55. return (div);
  56. }
  57. // ================================================================
  58. // Exercise methods in Complex class
  59. public static void main (String args[]) {
  60. // Setup and print two complex numbers
  61. Complex cA = new Complex( 1.0, 2.0 );
  62. Complex cB = new Complex( 3.0, 4.0 );
  63. System.out.println("cA = " + cA.toString() );
  64. System.out.println("cB = " + cB.toString() );
  65. // Output
  66. Complex cC = cA.Add( cB );
  67. System.out.println("Complex cA + cB = " + cC.toString() );
  68. Complex cD = cA.Sub( cB );
  69. System.out.println("Complex cA - cB = " + cD.toString() );
  70. Complex cE = cA.Mult( cB );
  71. System.out.println("Complex cA * cB = " + cE.toString() );
  72. Complex cF = cA.Div( cB );
  73. System.out.println("Complex cA / cB = " + cF.toString() );
  74. }
  75. }

答案1

得分: 1

  1. 创建一个由复数坐标组成的集合哈希集的维数为 n
  2. 它只是用来存储一组 `n` 个复数
  3. 将其传递给一个方法该方法将完成/相乘其元素
  4. 使用您拥有的 `Mult` 方法来相乘所有 `n` 个复数
  5. Set<Complex> complexNumbers = new HashSet<>();
  6. //向其中添加数字
  7. Optional<Complex> result = complexNumbers.stream()
  8. .reduce((c1, c2) -> c1.Mult(c2)); //或者 .reduce(Complex::Mult)
  9. Java 命名约定是以小写字母开头命名方法`mult` `multiply` 将是合适的命名
英文:

> Create a set (Hashset) of dimension n from complex coordinates.

It is just to store a set of n complex numbers.

> Transfer it to a method that completes/multiplies its elements.

Multiply all the n complex numbers using the Mult method you have.

  1. Set&lt;Complex&gt; complexNumbers = new HashSet&lt;&gt;();
  2. //add numbers to it
  3. Optional&lt;Complex&gt; result = complexNumbers.stream()
  4. .reduce((c1, c2) -&gt; c1.Mult(c2)); //or .reduce(Complex::Mult)

Note: Java naming convention is to name methods start with lower case (mult or multiply would be fair names)

huangapple
  • 本文由 发表于 2020年9月27日 20:23:34
  • 转载请务必保留本文链接:https://go.coder-hub.com/64088428.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定