【问题标题】:Addition method causing IDE crash, no error code加法导致IDE崩溃,无错误码
【发布时间】:2011-11-08 23:44:27
【问题描述】:

对于我的任务,我要在扩展 Number 的层次结构中创建 5 个类。我将为每个具有两个参数和类的返回类型的类创建加减乘法和除法方法。

每个类的方法语法都是一样的。它们都会在 Dr. Java 的交互窗格中导致崩溃并且不返回任何错误。

我该如何解决这个问题?

public class ComplexN extends Number{
  private double value1;
  private double value2;

  public ComplexN(double real, double imaginary){
    this.value1=real;
    this.value2=imaginary;
  }

  public double getRealPart(){
    return value1;
  }

  public double getImaginaryPart(){
    return value2;
  }


  public static ComplexN add(ComplexN a, ComplexN b){
    ComplexN sum = new ComplexN((a.getRealPart()+b.getRealPart()),(a.getImaginaryPart()+b.getImaginaryPart()));
    return sum;
  }
}

【问题讨论】:

  • 如果 IDE 崩溃,那么这是 IDE 中的错误,而不是您的代码的问题。
  • 编写一个可以从命令行运行的简单测试。然后你至少会有一个堆栈跟踪和消息。
  • 我认为问题在于我调用 add() 的方式。一位朋友看了看代码并能够成功调用它,但他现在走了……我是通过 a.add(a,b) 或 c.add(a,b) [ab 和 c 被实例化的ComplexN]
  • @OliCharlesworth:你是对的,我就这个问题联系了我的教授,他说 Java 博士和 Java 6.0 存在兼容性错误,当你尝试打印没有 toString() 的对象

标签: java crash drjava


【解决方案1】:

在与我的教授协商后,我确定了问题所在。

博士。 Java 存在与 Java 6.0 的兼容性问题,当您在未显式使用 toString() 的情况下打印对象的值时会导致安全错误。

所以使用:

(a.add(a,b)).toString() 

代替:

a.add(a,b)

或类似:

a.toString()

代替:

a

...会在短期内解决问题。也让类扩展 Object 而不是 Number 将修复此错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多