<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://metabolomics.jp/mediawiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://metabolomics.jp/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Aritalab%3ALecture%2FProgramming%2FJava%2FCalculator</id>
		<title>Aritalab:Lecture/Programming/Java/Calculator - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://metabolomics.jp/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Aritalab%3ALecture%2FProgramming%2FJava%2FCalculator"/>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Programming/Java/Calculator&amp;action=history"/>
		<updated>2026-04-08T18:20:09Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.1</generator>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Programming/Java/Calculator&amp;diff=255475&amp;oldid=prev</id>
		<title>Adm at 00:43, 2 June 2011</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Programming/Java/Calculator&amp;diff=255475&amp;oldid=prev"/>
				<updated>2011-06-02T00:43:49Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 00:43, 2 June 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Aritalab:Lecture/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Basic&lt;/del&gt;/PolishNotation|逆ポーランド記号]] (postfix)　か通常の記法　(infix) で数式を記述できる計算機です。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Aritalab:Lecture/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Algorithm&lt;/ins&gt;/PolishNotation|逆ポーランド記号]] (postfix)　か通常の記法　(infix) で数式を記述できる計算機です。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;四則演算のほかに log, sqrt をサポートしています。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;四則演算のほかに log, sqrt をサポートしています。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Programming/Java/Calculator&amp;diff=255474&amp;oldid=prev</id>
		<title>Adm at 08:31, 21 October 2010</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Programming/Java/Calculator&amp;diff=255474&amp;oldid=prev"/>
				<updated>2010-10-21T08:31:41Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 08:31, 21 October 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;逆ポーランド記号 (postfix)　か通常の記法　(infix) で数式を記述できる計算機です。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[Aritalab:Lecture/Basic/PolishNotation|&lt;/ins&gt;逆ポーランド記号&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]] &lt;/ins&gt;(postfix)　か通常の記法　(infix) で数式を記述できる計算機です。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;四則演算のほかに log, sqrt をサポートしています。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;四則演算のほかに log, sqrt をサポートしています。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Programming/Java/Calculator&amp;diff=255473&amp;oldid=prev</id>
		<title>Adm at 08:30, 21 October 2010</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Programming/Java/Calculator&amp;diff=255473&amp;oldid=prev"/>
				<updated>2010-10-21T08:30:54Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 08:30, 21 October 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;逆ポーランド記号 (postfix)　か通常の記法　(infix) で数式を記述できる計算機です。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;四則演算のほかに log, sqrt をサポートしています。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;; Calculator.java&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;import java.io.BufferedReader;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;import java.io.BufferedReader;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;/**&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;/**&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; * @author &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;foo&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; * @author &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;masanori arita&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; * 逆ポーランド記号電卓、および普通の記法の電卓&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; * 逆ポーランド記号電卓、および普通の記法の電卓&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; */&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; */&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Programming/Java/Calculator&amp;diff=255472&amp;oldid=prev</id>
		<title>Adm at 02:13, 20 October 2010</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Programming/Java/Calculator&amp;diff=255472&amp;oldid=prev"/>
				<updated>2010-10-20T02:13:59Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 02:13, 20 October 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;import java.io.BufferedReader;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;import java.io.BufferedReader;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;import java.io.InputStreamReader;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;import java.io.InputStreamReader;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 213:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 214:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Programming/Java/Calculator&amp;diff=255471&amp;oldid=prev</id>
		<title>Adm: New page: import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer;  /**  * @author foo  * 逆ポーランド記号電卓、および...</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Programming/Java/Calculator&amp;diff=255471&amp;oldid=prev"/>
				<updated>2010-10-20T02:13:43Z</updated>
		
		<summary type="html">&lt;p&gt;New page: import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer;  /**  * @author foo  * 逆ポーランド記号電卓、および...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;import java.io.BufferedReader;&lt;br /&gt;
import java.io.InputStreamReader;&lt;br /&gt;
import java.util.Stack;&lt;br /&gt;
import java.util.StringTokenizer;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @author foo&lt;br /&gt;
 * 逆ポーランド記号電卓、および普通の記法の電卓&lt;br /&gt;
 */&lt;br /&gt;
public class Calculator&lt;br /&gt;
  {&lt;br /&gt;
    static final int NUMBER = 0;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * 与えられた文字が数字なのか、オペレータなのかを判定する関数&lt;br /&gt;
     * オペレータの場合は優先度を返し、数字の場合はNUMBER （優先度は一番低い）&lt;br /&gt;
     * &lt;br /&gt;
     * @param op&lt;br /&gt;
     *          トークン（数かオペレータ）&lt;br /&gt;
     * @return トークンの優先度&lt;br /&gt;
     */&lt;br /&gt;
    int getPriority(String op)&lt;br /&gt;
      {&lt;br /&gt;
        final String[] functions = { &amp;quot;+&amp;quot;, &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;log&amp;quot;, &amp;quot;sqrt&amp;quot; };&lt;br /&gt;
        final int[] priority = { 1, 1, 2, 2, 3, 3 };&lt;br /&gt;
        for (int i = 0; i &amp;lt; functions.length; i&amp;amp;#43;&amp;amp;#43;)&lt;br /&gt;
          if (op.equals(functions[i]))&lt;br /&gt;
            return priority[i];&lt;br /&gt;
        return NUMBER;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * tokenStackの先頭からnextPrioより優先度が高い部分を popして計算&lt;br /&gt;
     * &lt;br /&gt;
     * @param nextPrio&lt;br /&gt;
     *          次に来ているトークンの優先度&lt;br /&gt;
     * @param stackPrio&lt;br /&gt;
     *          スタックの先頭にあるオペレータの優先度&lt;br /&gt;
     * @param tokenStack&lt;br /&gt;
     *          トークンが入っているスタック&lt;br /&gt;
     * @throws Exception&lt;br /&gt;
     */&lt;br /&gt;
    void reduce(int nextPrio, int stackPrio,&lt;br /&gt;
        Stack&amp;lt;String&amp;gt; tokenStack) throws Exception&lt;br /&gt;
      {&lt;br /&gt;
        while ((tokenStack.size() &amp;gt; 1)&lt;br /&gt;
            &amp;amp;&amp;amp; (nextPrio &amp;lt;= stackPrio))&lt;br /&gt;
          {&lt;br /&gt;
            // 1つめのtoken&lt;br /&gt;
            double num1 = Double.parseDouble(tokenStack&lt;br /&gt;
                .pop());&lt;br /&gt;
            // 2つめのtoken&lt;br /&gt;
            String op = tokenStack.pop();&lt;br /&gt;
&lt;br /&gt;
            /** ()の対応用 */&lt;br /&gt;
            if (op.equals(&amp;quot;(&amp;quot;))&lt;br /&gt;
              { // 左カッコを発見したら強制的に数式の終わりとみなす&lt;br /&gt;
                // 左カッコはここで捨てられる&lt;br /&gt;
                tokenStack.push(&amp;quot;&amp;quot; + num1);&lt;br /&gt;
                return;&lt;br /&gt;
              }&lt;br /&gt;
&lt;br /&gt;
            switch (getPriority(op)) {&lt;br /&gt;
            case 0:&lt;br /&gt;
              throw new Exception(&amp;quot;オペレータが足りません&amp;quot;);&lt;br /&gt;
            case 3: // 関数適用&lt;br /&gt;
              if (op.equals(&amp;quot;log&amp;quot;))&lt;br /&gt;
                num1 = Math.log(num1);&lt;br /&gt;
              else if (op.equals(&amp;quot;sqrt&amp;quot;))&lt;br /&gt;
                num1 = Math.sqrt(num1);&lt;br /&gt;
              break;&lt;br /&gt;
            case 1:&lt;br /&gt;
            case 2: // 四則演算&lt;br /&gt;
              if (tokenStack.size() == 0)&lt;br /&gt;
                throw new Exception(&amp;quot;オペランドが足りません&amp;quot;);&lt;br /&gt;
              double num2 = Double.parseDouble(tokenStack&lt;br /&gt;
                  .pop());&lt;br /&gt;
              if (op.equals(&amp;quot;/&amp;quot;))&lt;br /&gt;
                {&lt;br /&gt;
                  if (num1 == 0)&lt;br /&gt;
                    throw new Exception(&amp;quot;0で割り算しています&amp;quot;);&lt;br /&gt;
                  num1 = num2 / num1;&lt;br /&gt;
                }&lt;br /&gt;
              else if (op.equals(&amp;quot;*&amp;quot;))&lt;br /&gt;
                num1 = num2 * num1;&lt;br /&gt;
              else if (op.equals(&amp;quot;+&amp;quot;))&lt;br /&gt;
                num1 = num2 + num1;&lt;br /&gt;
              else if (op.equals(&amp;quot;-&amp;quot;))&lt;br /&gt;
                num1 = num2 - num1;&lt;br /&gt;
              break;&lt;br /&gt;
            }&lt;br /&gt;
            tokenStack.push(&amp;quot;&amp;quot; + num1);&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * 入力された数式を読んで計算する関数&lt;br /&gt;
     * @param st トークンの入力列&lt;br /&gt;
     * @return 計算結果&lt;br /&gt;
     * @throws Exception&lt;br /&gt;
     */&lt;br /&gt;
    double parse(StringTokenizer st) throws Exception&lt;br /&gt;
      {&lt;br /&gt;
        // トークンをためるスタックを初期化&lt;br /&gt;
        Stack&amp;lt;String&amp;gt; tokenStack = new Stack&amp;lt;String&amp;gt;();&lt;br /&gt;
        int stackTopPrio = 0;&lt;br /&gt;
        while (st.hasMoreTokens())&lt;br /&gt;
          {&lt;br /&gt;
            // 次に処理するトークンを先読み&lt;br /&gt;
            String token = st.nextToken();&lt;br /&gt;
&lt;br /&gt;
            /** ()の対応用 */&lt;br /&gt;
            if (token.equals(&amp;quot;)&amp;quot;))&lt;br /&gt;
              // 右カッコが出てきたら、入力文字列の最後とみなす&lt;br /&gt;
              break;&lt;br /&gt;
            else if (token.equals(&amp;quot;(&amp;quot;))&lt;br /&gt;
              // 左カッコが出てきたら、新しい数式が始まったとみなす&lt;br /&gt;
              // その結果を１つの数字とみなす&lt;br /&gt;
              tokenStack.push(&amp;quot;&amp;quot; + parse(st));&lt;br /&gt;
            else&lt;br /&gt;
&lt;br /&gt;
              // 演算か数式&lt;br /&gt;
              {&lt;br /&gt;
                int nextPrio = getPriority(token);&lt;br /&gt;
                // もし先読みしたトークンよりスタックに積んである式のほうが&lt;br /&gt;
                // 優先度が高い場合、スタックの中身を先に処理&lt;br /&gt;
                if ((nextPrio != NUMBER)&lt;br /&gt;
                    &amp;amp;&amp;amp; (nextPrio &amp;lt;= stackTopPrio))&lt;br /&gt;
                  reduce(nextPrio, stackTopPrio, tokenStack);&lt;br /&gt;
                tokenStack.push(token);&lt;br /&gt;
                if (nextPrio != NUMBER)&lt;br /&gt;
                  stackTopPrio = nextPrio;&lt;br /&gt;
              }&lt;br /&gt;
          }&lt;br /&gt;
        // 入力文字列の最後にきたので、スタックに残っている式を処理&lt;br /&gt;
        reduce(0, stackTopPrio, tokenStack);&lt;br /&gt;
&lt;br /&gt;
        if (tokenStack.size() != 1)&lt;br /&gt;
          throw new Exception(&amp;quot;オペレータが足りません&amp;quot;);&lt;br /&gt;
        return Double.parseDouble(tokenStack.pop());&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
    public double parseRPN(StringTokenizer st)&lt;br /&gt;
    throws Exception&lt;br /&gt;
      {&lt;br /&gt;
        Stack&amp;lt;String&amp;gt; tokenStack = new Stack&amp;lt;String&amp;gt;();&lt;br /&gt;
        while (st.hasMoreTokens())&lt;br /&gt;
          {&lt;br /&gt;
            String nextToken = st.nextToken();&lt;br /&gt;
            if (nextToken.equals(&amp;quot;+&amp;quot;))&lt;br /&gt;
              {&lt;br /&gt;
                if (tokenStack.size() &amp;lt; 2)&lt;br /&gt;
                  throw new Exception(&amp;quot;オペランドが足りません&amp;quot;);&lt;br /&gt;
                double d1 = Double.parseDouble(tokenStack.pop());&lt;br /&gt;
                double d2 = Double.parseDouble(tokenStack.pop());&lt;br /&gt;
                tokenStack.push(&amp;quot;&amp;quot; + (d2 + d1));&lt;br /&gt;
              }&lt;br /&gt;
            else if (nextToken.equals(&amp;quot;-&amp;quot;))&lt;br /&gt;
              {&lt;br /&gt;
                if (tokenStack.size() &amp;lt; 2)&lt;br /&gt;
                  throw new Exception(&amp;quot;オペランドが足りません&amp;quot;);&lt;br /&gt;
                double d1 = Double.parseDouble(tokenStack.pop());&lt;br /&gt;
                double d2 = Double.parseDouble(tokenStack.pop());&lt;br /&gt;
                tokenStack.push(&amp;quot;&amp;quot; + (d2 - d1));&lt;br /&gt;
              }&lt;br /&gt;
            else if (nextToken.equals(&amp;quot;log&amp;quot;))&lt;br /&gt;
              {&lt;br /&gt;
                if (tokenStack.size() &amp;lt; 1)&lt;br /&gt;
                  throw new Exception(&amp;quot;オペランドが足りません&amp;quot;);&lt;br /&gt;
                double d1 = Double.parseDouble(tokenStack.pop());&lt;br /&gt;
                tokenStack.push(&amp;quot;&amp;quot; + Math.log(d1));&lt;br /&gt;
              }&lt;br /&gt;
            else &lt;br /&gt;
              tokenStack.push(nextToken);&lt;br /&gt;
          }&lt;br /&gt;
        //最後にスタックには数字が一つ残っているはず&lt;br /&gt;
        if (tokenStack.size() != 1)&lt;br /&gt;
          throw new Exception(&amp;quot;オペレータが足りません&amp;quot;);&lt;br /&gt;
        return Double.parseDouble(tokenStack.pop());&lt;br /&gt;
      }&lt;br /&gt;
    &lt;br /&gt;
    public static void main(String[] args)&lt;br /&gt;
      {&lt;br /&gt;
        try&lt;br /&gt;
          {&lt;br /&gt;
            BufferedReader br = new BufferedReader(&lt;br /&gt;
                new InputStreamReader(System.in));&lt;br /&gt;
            while (true)&lt;br /&gt;
              {&lt;br /&gt;
                System.out.print(&amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;
                String line = br.readLine();&lt;br /&gt;
                if (line == null)&lt;br /&gt;
                  break;&lt;br /&gt;
                StringTokenizer st = new StringTokenizer(&lt;br /&gt;
                    line);&lt;br /&gt;
                try&lt;br /&gt;
                  {&lt;br /&gt;
                    Calculator C = new Calculator();&lt;br /&gt;
                    //System.out.println(C.parseRPN(st)); // 逆ポーランド電卓 &lt;br /&gt;
                    System.out.println(C.parse(st));    // 普通の電卓&lt;br /&gt;
                  }&lt;br /&gt;
                catch (Exception e)&lt;br /&gt;
                  {&lt;br /&gt;
                    System.out.println(&amp;quot;Error = &amp;quot; + e);&lt;br /&gt;
                  }&lt;br /&gt;
              }&lt;br /&gt;
          }&lt;br /&gt;
        catch (Exception exp)&lt;br /&gt;
          {&lt;br /&gt;
            exp.printStackTrace();&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	</feed>