【问题标题】:Type mismatch: cannot convert from double to double[]类型不匹配:无法从双精度转换为双精度 []
【发布时间】:2017-03-16 13:23:10
【问题描述】:
public class DSAStack
{
    private int count;
    private double[] stack;
    public static final int default_capacity = 100;

    public DSAStack()
    { 
        this.stack = stack[default_capacity];
        this.count = 0;
    }

    public DSAStack(int capacity)
    { 
        this.stack = stack[capacity];
        this.count = 0;
    }
}

Eclipse 建议快速修复不做任何更改,只是突出显示double[],可能是一个非常愚蠢的错误,但我无法弄清楚。

【问题讨论】:

  • new stack[default_capacity]
  • 我建议您将第一个构造函数代码更改为this(default_capacity); 以使用DSAStack(int),这样会减少冗余。其余的,请参阅答案以了解问题。
  • stack[capacity] 在最后一个元素之后返回一个元素。

标签: java arrays constructor double


【解决方案1】:

我想你是说

this.stack = new double[default_capacity];

还有

this.stack = new double[capacity];

【讨论】:

  • 是的,我一发布就觉得很愚蠢。谢谢
  • 没问题,有时就是这样。
  • 请删除问题以避免对问题禁令做出贡献
  • 我一找到答案就去删除了,但是你们太快了,我之前回答了,现在我不能了。
【解决方案2】:

this.stack = stack[default_capacity]; 中,您尝试将值插入到等于default_capacity 的索引中的stack,即double。因此错误

类型不匹配:无法从 double 转换为 double[]

你需要使用new初始化stack

this.stack = new double[default_capacity];

【讨论】:

    【解决方案3】:

    this.stack = stack[default_capacity]

    堆栈是双[]。 堆栈 [default_capacity] 是双倍的。

    【讨论】:

    • 您应该尝试使用代码标签来格式化您的答案。如果英语对你来说不容易,至少代码是可读的;)
    【解决方案4】:

    你应该用 new 来写:

    this.stack = new stack[default_capacity];
    

    【讨论】:

      【解决方案5】:

      Double 是一个类类型。 nextDouble 返回原始类型 double。将A改为双数组

      双[] A = 新双[大小];

      【讨论】:

      • 这没有意义,OP 使用原始类型数组double[] 而不是Double[]。所以这根本不是一个类数组。这个返回原始类型的nextDouble 是什么?这还不清楚。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多