【问题标题】:casting a Stack as a double将 Stack 转换为 double
【发布时间】:2014-04-17 04:31:19
【问题描述】:

好的,这是我遇到问题的代码行:

double endNumber = (double)numbers.pop();
return endNumber;

我的问题是我需要从堆栈中弹出的数字作为双精度数,但我不断收到错误:

线程“main”java.lang.ClassCastException 中的异常:java.lang.String 无法转换为 java.lang.Double

有没有办法解决这个问题?

【问题讨论】:

  • 下面的答案是正确的,但我强烈建议研究泛型。将您的堆栈参数化为它存储的引用类型——在本例中为String,但它可以是任何东西。这样,您不必进行强制转换(编译器会为您执行),并且您会进行类型检查,这将清楚地表明 numbers.pop() 返回一个 String,然后您必须对其进行解析。
  • 你弹出的东西是你最后推的东西。如果您推送的最后一个东西是一个字符串,那么弹出的东西将是一个字符串,并且您不能将字符串转换为双精度值。

标签: java stack double


【解决方案1】:

您的pop() 方法返回String,并且您必须将其解析为double

double endNumber = Double.parseDouble(numbers.pop());

【讨论】:

    【解决方案2】:
    return Double.parseDouble(numbers.pop());
    

    【讨论】:

      【解决方案3】:

      您需要将您从堆栈中弹出的项目转换为双精度:

      double endNumber = Double.parseDouble(numbers.pop());
      return endNumber;
      

      【讨论】:

        【解决方案4】:

        你必须使用Double.parseDouble(argument)

        double endNumber = Double.parseDouble(numbers.pop());
        

        或者你可以不使用任何double变量直接返回。

        【讨论】:

          猜你喜欢
          • 2023-04-01
          • 2016-10-10
          • 1970-01-01
          • 1970-01-01
          • 2020-06-22
          • 2010-11-09
          • 2019-07-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多