我想驗證我對堆棧的理解。當我開始瞭解基本知識並且我仍然有一段路要走的時候,我發現了一個引起我好奇心的例子。java堆棧和一個明顯的毫無意義的練習
我的研究包括此線程:
Understanding Postfix-expression Evaluation in Java code using a stack
我從我上面提到的線程在特定一行混淆。
這裏是整個代碼段 - 我的問題是指while循環線路 - 代碼後的細節:
public static void main(String[] args)
{
char[] a = args[0].toCharArray();
int N =a.length;
intStack s = new intStack();
for (int i = 0; i<N; i++)
{
if (a[i]=='+')
{
s.push(s.pop() + s.pop());
}
if (a[i]=='*')
{
s.push(s.pop() * s.pop());
}
if ((a[i] >= '0') && (a[i] <= '9'))
{
s.push(0);
}
while ((a[i] >= '0') && (a[i] <= '9'))
{
s.push(10*s.pop() + (a[i++]-'0'));
}
Out.println(s.pop() + "");
}
}
我的問題是這樣的:它的-'0'
起什麼作用?如果我正確理解其餘部分,我們引用char 0(由於單引號),並且-
似乎是減法運算符。減去零 - 一個硬編碼的零,而不是偶爾偶爾會發生的變量 - 似乎毫無意義。
我目前的假設是,對此有一個細微差別的答案 - 也就是說它只是/看起來/是毫無意義的練習,但是有一些真正神奇的事情發生,我簡直太難以理解了。
在此先感謝大家 - 我從建議中學到了很多 - 這很快就成爲我最喜歡和訪問量最大的網站之一。
此致
非常感謝您的答覆 - 非常有意義了。與我以前在Excel中完成的操作非常相似 - 將格式爲文本(字符串)的數字乘以1以將單元格轉換爲數字。 在最後一行發生了類似的情況嗎? '+「」)' – Mac