【发布时间】:2014-11-08 03:53:11
【问题描述】:
我将代码更改为使用 if-else 语句,但仍有问题。
当我尝试在 unix 中键入 = 时,它没有打印出 0。而且当我键入任何内容时它也没有打印出任何内容。这是怎么回事..请帮忙
对不起,我是新手,请耐心等待。
public static void processCommand(String s) {
//If an "=" is received, print zero always
if (s.charAt(s.length()-1) == '=') {
System.out.println(0);
}
}
public static boolean isOperator(String s) {
return (s.equals("+") || s.equals("-") || s.equals("*") || s
.equals("/")) || s.equals("%");
}
public static void main(String[] args) {
String s;
//create a stack called st
Stack<Integer> st = new Stack<Integer>();
Scanner scan = new Scanner(System.in);
while (scan.hasNext()) {
s = scan.next();
if (isOperator(s)) {
if (st.size() > 1) {
if (s.equals("+")) {
st.push((Integer) st.pop() + (Integer) st.pop());
} else if (s.equals("-")) {
st.push(-(Integer) st.pop() + (Integer) st.pop());
} else if (s.equals("*")) {
st.push(-(Integer) st.pop() * (Integer) st.pop());
} else if (s.equals("/")) {
int x = st.pop();
int y = st.pop();
if (x == 0) {
System.out.println("Cannot be divided by zero");
} else {
st.push(y/x);
}
}
}
processCommand(s);
}
}
}
【问题讨论】:
-
简单:不要使用开关...
-
if else 语句应该可以吗?我是新手,所以不太了解。
-
你为什么不试试呢? ;)
-
你能从你的代码中提出一个明确的问题吗?
-
抱歉我刚刚改了..请帮忙
标签: java string stack int java.util.scanner