java吧 关注:1,251,315贴子:12,735,042
  • 13回复贴,共1

求字符串形式的算术表达式值,先谢谢给为大佬

只看楼主收藏回复

遇到2个问题:
1.第一次循环时,会多输出个5+5,不知道为啥,明明不满足条件表达式,还会执行
2.switch()语句,第一个case,报错NumberFormatException;注释掉这一行,就没事了,后面结果也对
一样的转换,为什么就这哥们出问题。。。
谢谢大佬!搞半天,没搞出来...


IP属地:上海1楼2018-08-23 00:16回复
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    /* 项目根路径下有个questions.txt文件内容如下:
    5+5
    150-25
    155*155
    2555/5
    要求:读取内容计算出结果,将结果写入到results.txt文件中
    5+5=10
    */
    public class hm03 {
    public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new FileReader("io-code\\questions.txt"));
    ArrayList<String> list = new ArrayList<>();
    String line;
    //将文本内容放入集合
    while ((line = br.readLine()) != null) {
    list.add(line);
    }
    br.close();
    System.out.println(list); //[155*155, 5+5, 150-25, 2555/5]
    System.out.println("计算结果:");
    for (int i = 0; i < list.size(); i++) {
    String s = list.get(i);
    for (int j = 0; j < s.length(); j++) {
    //第一次会多输出个[5+5],不知道为啥
    if(j==0){
    continue;
    }
    if (!(s.charAt(j) >= '0' && s.charAt(j) <= '9')) {
    char c = s.charAt(j);
    // System.out.println(c);把上面的continue去掉,会多输出一行空格,结果:空行,+,-,*,/
    String bei = s.substring(0,j);
    // System.out.println(bei);
    String chu = s.substring(j+1);
    // System.out.println(chu);
    // //判断是哪个运算符,并计算值
    switch (s.charAt(j)) {
    case '+':
    //这一个报NumberFormatException
    // System.out.println((Integer.valueOf(bei) + Integer.valueOf(chu)));
    break;
    case '-':
    System.out.println(bei+c+chu+"="+(Integer.valueOf(bei) - Integer.valueOf(chu)));
    break;
    case '*':
    System.out.println(bei+c+chu+"="+(Integer.valueOf(bei) * Integer.valueOf(chu)));
    break;
    case '/':
    System.out.println(bei+c+chu+"="+(Integer.valueOf(bei) / Integer.valueOf(chu)));
    break;
    default:
    System.out.println("error");
    break;
    }
    }
    }
    }
    }
    }


    IP属地:上海2楼2018-08-23 00:16
    回复
      代码2楼,吞了我在补。。。


      IP属地:上海3楼2018-08-23 00:16
      回复
        求大佬指点


        IP属地:上海来自Android客户端4楼2018-08-23 00:25
        回复


          IP属地:上海来自Android客户端5楼2018-08-23 07:50
          回复
            用ByteArrayInputStream?


            IP属地:安徽来自Android客户端6楼2018-08-23 08:42
            收起回复
              我直接把你的代码弄下来……什么问题也没有,就是实现复杂了点,用正则会好很多


              IP属地:湖北来自Android客户端7楼2018-08-23 15:17
              收起回复
                去掉continue有空格的原因是你的questions文件每一行前面都有一个空格


                IP属地:湖北来自Android客户端8楼2018-08-23 15:21
                收起回复
                  谢谢各位大佬指点,我再试试


                  IP属地:上海来自Android客户端9楼2018-08-23 22:04
                  回复