JAVA 中的转换问题
Casting issue in JAVA
我在从字符串转换为 char 然后转换为 double 时遇到问题。我正在尝试计算一个简单的表达式 1+2,但是当我从堆栈中弹出它时,结果分别为 50.0 和 49.0。然后加到 99.0。我的代码如下。
表达式为'1+2'
public static double calculate (String expression){
Stack<Character> calc = new Stack();
expression.replaceAll("\s+","") ;
double result = 0;
for(int i = 0; i < expression.length(); i++){
calc.push((char) expression.charAt(i));
}
double one = (double) calc.pop();
char expr = calc.pop();
double two = (double) calc.pop();
if(expr == '-'){
result = one - (1*two);
} else if (expr == '+'){
result = one + (1*two);
}
System.out.println(result);
return result;
}
问题是,当您直接转换为这样的数字时
(double) calc.pop();
...你实际上得到了 ascii 值 characters '1'
(ascii 49
) 和 '2'
(ascii 50
).
您需要解析字符。这样的事情会起作用:
Double.parseDouble(calc.pop().toString());
我在从字符串转换为 char 然后转换为 double 时遇到问题。我正在尝试计算一个简单的表达式 1+2,但是当我从堆栈中弹出它时,结果分别为 50.0 和 49.0。然后加到 99.0。我的代码如下。
表达式为'1+2'
public static double calculate (String expression){
Stack<Character> calc = new Stack();
expression.replaceAll("\s+","") ;
double result = 0;
for(int i = 0; i < expression.length(); i++){
calc.push((char) expression.charAt(i));
}
double one = (double) calc.pop();
char expr = calc.pop();
double two = (double) calc.pop();
if(expr == '-'){
result = one - (1*two);
} else if (expr == '+'){
result = one + (1*two);
}
System.out.println(result);
return result;
}
问题是,当您直接转换为这样的数字时
(double) calc.pop();
...你实际上得到了 ascii 值 characters '1'
(ascii 49
) 和 '2'
(ascii 50
).
您需要解析字符。这样的事情会起作用:
Double.parseDouble(calc.pop().toString());