Java 版 (精华区)

发信人: DreamWeaver (小样儿的,我气不死你?), 信区: Java
标  题: [合集]每日一题:(2)字符串转表达式
发信站: 哈工大紫丁香 (2002年08月20日19:39:45 星期二), 站内信件


────────────────────────────────────────
 bille (bille)                        于 2002年08月15日15:40:23 星期四 说道:

设为包含parser.jar的路径就行了吧?
【 在 bali (阿奔) 的大作中提到: 】
: 不需要什么安装啊,只要把解析xml的包放到classpath中使得
: 你的程序编译、运行的时候能找到就可以。
: 【 在 bille (bille) 的大作中提到: 】
: : rt

────────────────────────────────────────
 DreamWeaver (戴眼镜的流氓程序员)     于 2002年08月14日10:07:33 星期三 说道:

        编写一控制台程序,从控制台中读取一字符串,形如“a+b-c*d/e”
    在程序中将此字符串转化为表达式,例如:result=a+b-c*d/e,然后将
    表达式中的变量从左到右依次初始化为1、2、3....,输出result值。
    参考:
    pleast input the String:
    a+b+c+d
    the exp is result=a+b+c+d
               result=1+2+3+4=10
    要求:
    1. 变量名不要求与字符串中的字符相同
    2. 暂定变量最多为5个,运算符为 +、-、*、/
    3. 程序有良好的风格并有文档注释
    4. 有详细的算法分析
    附加:如果有能力可以将变量个数设为不限,将运算符加上(、)、等。
    参考答案在两天内公布。

────────────────────────────────────────
 goldenleaf (** 流光飞舞 **)          于 2002年08月14日10:12:58 星期三 说道:

如果java里也能象数据库中有宏代换就好了//java里有没有我不知道呀,呵呵
假定有宏代换,这样的问题就是很easy的
【 在 DreamWeaver (戴眼镜的流氓程序员) 的大作中提到: 】
:         编写一控制台程序,从控制台中读取一字符串,形如“a+b-c*d/e”
:     在程序中将此字符串转化为表达式,例如:result=a+b-c*d/e,然后将
:     表达式中的变量从左到右依次初始化为1、2、3....,输出result值。
:     参考:
:     pleast input the String:
:     a+b+c+d
:     the exp is result=a+b+c+d
:                result=1+2+3+4=10

────────────────────────────────────────
 elife (木木@找到真实的自己)          于 2002年08月14日10:17:46 星期三 说道:

大家别管他
【 在 DreamWeaver (戴眼镜的流氓程序员) 的大作中提到: 】
:         编写一控制台程序,从控制台中读取一字符串,形如“a+b-c*d/e”
:     在程序中将此字符串转化为表达式,例如:result=a+b-c*d/e,然后将
:     表达式中的变量从左到右依次初始化为1、2、3....,输出result值。
:     参考:
:     pleast input the String:
:     a+b+c+d
:     the exp is result=a+b+c+d
:                result=1+2+3+4=10

────────────────────────────────────────
 zhangyan (Sleepless in Patterns)     于 2002年08月14日12:01:37 星期三 说道:

写一个程序,不太切题 只有add 没有运算优先
#file expr.java
interface expr{
    public int value();
}
#file addexpr.java
class addexpr implements expr{
    expr le;
    expr re;
    public addexpr(expr lle, expr rre){
        le=lle;
        re=rre;
    }
    public int value(){
        return (le.value() + re.value());
    }
}
#file num.java
class num implements expr{
    static int count=1;
    int _val;
    public num(){
        _val=count++;
    }
    public int value(){
        return _val;
    }
}
#file cal.java
import java.util.*;
class cal{
    public static void main(String[] arg){
    expr res_= new num();   //assume the fist of input is not operator
    for(int i=1;i<arg[0].length()-1;++i){
        if(Character.isLetter(arg[0].charAt(i))){
            res_= new num();
        }else{
            expr tmp=res_;
            res_= new addexpr(tmp,new num()); //doesn't consider input 
correctness
            ++i;
        }   //only deal with add expressions
    }
    System.out.println("Resault of "+arg[0]+" is:"+res_.value());
    }
}
 【 在 DreamWeaver ( 戴眼镜的流氓程序员) 的大作中
提到: 】:         编写一控制台程序,从控制台中读取一字符串,形如“a+b-c*d/e”
:     在程序中将此字符串转化为表达式,例如:result=a+b-c*d/e,然后将
:     表达式中的变量从左到右依次初始化为1、2、3....,输出result值。
:     参考:
:     pleast input the String:
:     a+b+c+d
:     the exp is result=a+b+c+d
:                result=1+2+3+4=10

────────────────────────────────────────
 DreamWeaver (戴眼镜的流氓程序员)     于 2002年08月14日15:41:25 星期三 说道:

呵呵,这道题真的不是很容易呢!
【 在 DreamWeaver (戴眼镜的流氓程序员) 的大作中提到: 】
:         编写一控制台程序,从控制台中读取一字符串,形如“a+b-c*d/e”
:     在程序中将此字符串转化为表达式,例如:result=a+b-c*d/e,然后将
:     表达式中的变量从左到右依次初始化为1、2、3....,输出result值。
:     参考:
:     pleast input the String:
:     a+b+c+d
:     the exp is result=a+b+c+d
:                result=1+2+3+4=10

────────────────────────────────────────
 DreamWeaver (戴眼镜的流氓程序员)     于 2002年08月14日15:42:57 星期三 说道:

不考虑优先级这道题就没有多大难度了
呵呵
【 在 zhangyan (Sleepless in Patterns) 的大作中提到: 】
: 写一个程序,不太切题 只有add 没有运算优先
: #file expr.java
: interface expr{
:     public int value();
: }
: #file addexpr.java
: class addexpr implements expr{

────────────────────────────────────────
 zhangyan (Sleepless in Patterns)     于 2002年08月14日15:50:53 星期三 说道:

也难不了多少
这种简单的表达式,用编译原理的东西做起来反而蹩脚
还是用interpreter模式来的方便
【 在 DreamWeaver (戴眼镜的流氓程序员) 的大作中提到: 】
: 不考虑优先级这道题就没有多大难度了
: 呵呵
: 【 在 zhangyan (Sleepless in Patterns) 的大作中提到: 】
: : 写一个程序,不太切题 只有add 没有运算优先
: : #file expr.java
: : interface expr{
: :     public int value();
: : }
: : #file addexpr.java
: : class addexpr implements expr{

────────────────────────────────────────
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.378毫秒