|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 2470|回復: 3
打印 上一主題 下一主題

Java编程问题,求救!

[複製鏈接]

13

主題

0

好友

454

積分

中學生

Rank: 3Rank: 3

  • TA的每日心情
    無聊
    2022-10-9 15:05
  • 簽到天數: 344 天

    [LV.8]以壇為家I

    推廣值
    0
    貢獻值
    68
    金錢
    892
    威望
    454
    主題
    13
    跳轉到指定樓層
    樓主
    發表於 2013-10-7 22:07:33 |只看該作者 |倒序瀏覽
    20金錢
    public class Evaluate {
        public static void main(String[] args) {
            Stack<String> ops  = new Stack<String>();
            Stack<Double> vals = new Stack<Double>();

            while (!StdIn.isEmpty()) {
                String s = StdIn.readString();
                if      (s.equals("("))               ;
                else if (s.equals("+"))    ops.push(s);
                else if (s.equals("-"))    ops.push(s);
                else if (s.equals("*"))    ops.push(s);
                else if (s.equals("/"))    ops.push(s);
                else if (s.equals("sqrt")) ops.push(s);
                else if (s.equals(")")) {
                    String op = ops.pop();
                    double v = vals.pop();
                    if      (op.equals("+"))    v = vals.pop() + v;
                    else if (op.equals("-"))    v = vals.pop() - v;
                    else if (op.equals("*"))    v = vals.pop() * v;
                    else if (op.equals("/"))    v = vals.pop() / v;
                    else if (op.equals("sqrt")) v = Math.sqrt(v);
                    vals.push(v);
                }
                else vals.push(Double.parseDouble(s));
            }
            StdOut.println(vals.pop());
        }
    }
    以上所有方法均已声明,在使用Dijkstra的双栈算术表达式求值算法,无论输入什么,都会出现以下错误
    java.lang.NumberFormatException: For input string: "什么都可以,无论是带括号的算式或者简单计算"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241)
            at java.lang.Double.parseDouble(Double.java:540)
            at Evaluate.main(Evaluate.java:24)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:601)
            at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
    为什么呢???

    6

    主題

    0

    好友

    3838

    積分

    大學生

    Rank: 6Rank: 6

  • TA的每日心情
    擦汗
    昨天 18:39
  • 簽到天數: 2600 天

    [LV.Master]伴壇終老

    推廣值
    0
    貢獻值
    10
    金錢
    0
    威望
    3838
    主題
    6

    回文勇士 男生勳章 文明人 簽到勳章 中學生 簽到達人 高中生

    沙發
    發表於 2013-10-8 21:20:59 |只看該作者
    hoho,四则运算
    回復

    使用道具 舉報

    0

    主題

    0

    好友

    282

    積分

    小學生

    Rank: 2

  • TA的每日心情
    開心
    2024-10-26 07:54
  • 簽到天數: 364 天

    [LV.8]以壇為家I

    推廣值
    0
    貢獻值
    0
    金錢
    1655
    威望
    282
    主題
    0
    板凳
    發表於 2013-11-7 23:49:08 |只看該作者
    没仔细看,只是想问,为什么你要用if嵌套的方法?直接用类似Switch这类开关语句不行?估计错误就在IF嵌套里头了。属于逻辑错误吧
    請大家多給發帖者支持,有您們回應支持,才有動力去發貼!
    回復

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 按這成為會員

    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-11-25 11:27 , Processed in 0.014141 second(s), 15 queries , Gzip On, Memcache On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部