我得到的一小段代码破译,解释和改进提供任何建议。 有人告诉我,它的工作原理,我们不能运行的代码来测试它。 我非常理解,但只需要有人来运行它,以确保什么,我理解它是正确的,请得到任何帮助,解释什么,我不understand.I一直在做一吨的研究,仍然有一些的问题。
该代码实现用于读取只使用乘法和加法后缀表达式。 然后计算表达式而保存结果到堆栈。 然后打印出结果。 操作数被压入堆栈,然后当它读取操作,它从堆栈执行计算并把结果存储回堆栈中弹出顶部2操作数。
该计划假定整数和运营商都通过某种像一个空格或什么性质的界定,但不会在所有检查输入的合法性。
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() + "");
}
}
交的修复表达例如:2 3 5 + * = 16
我很困惑,当谈到持续if语句和while循环。
因此,它推动它将存储一个#0 0-9数字字符的第一次,然后以10弹出使得0,多发性它并将它添加到下一个数字字符(如果有一个),其被转换成int和推结果返回到堆栈? 如果是这样,为什么一0压入堆栈?
如果不是第0-9号字符转换为int数据类型,将其推入堆栈,然后进入while循环?
然后在While循环,读取该阵列,并保持转换0-9编号字符为int数据类型和将它们推到堆栈,直到一个字符被读取不同?
我也看不出它是递增INT I while循环或打破while循环推进到下一个字符?