我正在尝试将Fraction
个对象存储在类型Stack
的{{1}}中,然后检索它们以对它们执行算术计算,但是,对象正在转换为类型{{ 1}}当我把它们放入堆栈时我无法将它们转换回类型Number
。编译错误发生在下面的源代码的第19行。我该如何解决?
源代码:
Number
Fraction
班import java.util.Scanner;
import java.util.Stack;
public class Test{
public static void main(String[] args){
String line = "3/4";
Scanner input = new Scanner(line);
Stack<Number> numbers = new Stack<>();
while (input.hasNext()){
if (input.hasNext("/")){
numbers.push(new Fraction(input.next()));
}
}
if (numbers.peek() instanceof Fraction){
Fraction rhs = numbers.pop();
System.out.println(rhs.getFraction());
}
}
}
,因为我需要能够存储Fraction
,exends Number
,Integers
和Doubles
个数字来支持类型间数学运算。请注意,这不是整个Fraction类,但它是我用于编译这个小测试程序的全部内容。
Fractions
答案 0 :(得分:1)
这与Fraction
无关。如果Fraction
子类Number
,那么您应该能够从Number
投射到Fraction
。像
Fraction rhs = (Fraction) numbers.pop()