| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1634 人关注过本帖
标题:这个程序如何写
只看楼主 加入收藏
nozuono
Rank: 2
等 级:论坛游民
帖 子:5
专家分:14
注 册:2017-3-19
收藏
 问题点数:0 回复次数:4 
这个程序如何写
1.输入一个数学计算表达式,如:1+2
2.然后输出计算后的结果:1+2=3
3.这里计算表达式只计算一次即可,可以使用加减乘除任意一个,可以进行小数运算。
搜索更多相关主题的帖子: 表达式 如何 数学 
2017-03-29 22:55
纵横阳仔
Rank: 7Rank: 7Rank: 7
来 自:自学成才的火星人儿
等 级:贵宾
威 望:26
帖 子:147
专家分:698
注 册:2016-10-20
收藏
得分:0 
看似简单的一道题,实际很复杂,我只写了整数的计算,其他的你先自己先试着写写吧,
我的思路是对你输入的表达式进行判断,并进行相应的计算,关键是判断的过程十分的麻烦.代码没有优化过,有人愿意的话,提出自己的改进意见,小数没顾上写.
(关于运行方面,我增加了死循环可以多次键盘录入.)
import java.util.Scanner;

/*
 *     1.输入一个数学计算表达式,如:1+2
 *    2.然后输出计算后的结果:1+2=3
 *    3.这里计算表达式只计算一次即可,可以使用加减乘除任意一个,可以进行小数运算。
 *   
 *   
 */
public class Test1 {

    public static void main(String[] args) {
        // 键盘录入这个表达式,为了方便采用字符串的形式
        Scanner sc = new Scanner(System.in);
        Scanner sc2 = new Scanner(System.in);
        // 调用方法
        // 对输入的字符串进行判断
        String flag = "Y";
        while (flag.equalsIgnoreCase("Y")) {
            // 关于+出现次数的记录
            int jiaCount = 0;
            // 关于-出现次数的记录
            int jianCount = 0;
            // 关于*出现次数的记录
            int chengCount = 0;
            // 关于/出现次数的记录
            int chuCount = 0;
            boolean b = true;
            System.out.println("请输入一个算术表达式");
            String s = sc.nextLine();
            for (int i = 0; i < s.length(); i++) {
                String s1 = s.substring(i, i + 1);
                if (!(s1.matches("[0-9]") || s1.matches("\\+")
                        || s1.matches("\\-") || s1.matches("\\*")
                        || s1.matches("\\/") || s1.matches("\\."))) {
                    System.out.println("你输入的表达式有误!!!");
                    b = false;
                    break;
                } else if (s1.equals("+")) {
                    jiaCount++;
                } else if (s1.equals("-")) {
                    jianCount++;
                } else if (s1.equals("*")) {
                    chengCount++;
                } else if (s1.equals("/")) {
                    chuCount++;
                }
            }
            if (b) {
                if (chengCount > 1 || chuCount > 1 || s.contains("+++")
                        || s.contains("---") || jiaCount > 3 || jianCount > 3) {
                    System.out.println("你输入的表达式有误!!!");

                } else {
                    method(s);
                }
            }
            System.out.println("是否还要继续?是/否(Y/按其它任意键键退出)");
            flag = sc2.nextLine();
        }
    }

    private static void method(String s) {
        // 整数计算
        if (!s.contains(".")) {
            intJiSuan(s);
        }

    }

    // 关于整数的运算
    private static void intJiSuan(String s) {
        // 加法计算
        if (s.contains("+") && s.startsWith("+")) {
            String[] ss = s.split("\\+", 3);
            int sum = 0;
            for (int i = 1; i < ss.length; i++) {
                sum += Integer.valueOf(ss[i]);
            }
            System.out.println(sum);
        } else if (s.contains("+")) {
            String[] ss = s.split("\\+", 2);
            int sum = 0;
            for (int i = 0; i < ss.length; i++) {
                sum += Integer.valueOf(ss[i]);
            }
            System.out.println(sum);
        }
        // 减法计算
        if (s.contains("-") && !s.contains("+") && !s.contains("*")) {

            if (s.startsWith("-")) {
                String[] ss = s.split("\\-", 3);
                System.out.println(-Integer.valueOf(ss[1])
                        - Integer.valueOf(ss[2]));
            } else {
                String[] ss = s.split("\\-", 2);
                System.out.println(Integer.valueOf(ss[0])
                        - Integer.valueOf(ss[1]));
            }
        }
        // 乘法计算
        if (s.contains("*")) {

            String[] ss = s.split("\\*", 2);

            System.out.println(Integer.valueOf(ss[0]) * Integer.valueOf(ss[1]));
        }
        // 除法计算
        if (s.contains("/")) {
            String[] ss = s.split("\\/", 2);
            if (!s.endsWith("/0")) {
                if (s.startsWith("0/")) {
                    // 如果0作为除数,结果为零
                    System.out.println(0);
                } else if (Integer.valueOf(ss[0]) % Integer.valueOf(ss[1]) == 0) {
                    // 如果恰好可以整除,结果为整数
                    System.out.println(Integer.valueOf(ss[0])
                            / Integer.valueOf(ss[1]));
                } else {
                    // 否则结果为double类型的值
                    System.out.println((double) Integer.valueOf(ss[0])
                            / Integer.valueOf(ss[1]));
                }
            } else {
                System.out.println("0不能作为除数!!!");
            }
        }

    }

}


[此贴子已经被作者于2017-4-1 22:00编辑过]

2017-04-01 08:40
shenzao
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-4-4
收藏
得分:0 
java新手 运行时为什么出错啊


2017-04-05 19:03
纵横阳仔
Rank: 7Rank: 7Rank: 7
来 自:自学成才的火星人儿
等 级:贵宾
威 望:26
帖 子:147
专家分:698
注 册:2016-10-20
收藏
得分:0 
出错原因要一起发出来,不然不知道哪里错了
2017-04-06 07:15
w2589523572
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2020-4-3
收藏
得分:0 
public static void main(String[] args) {
        // TODO 自动生成的方法存根
                      double a,b;
                      String op;
         Scanner xi=new Scanner(System.in);
         System.out.println("请输入操作数1为:");
                 a=xi.nextDouble();
         System.out.println("请输入运算符为:");
                 op=xi.next();
         System.out.println("请输入操作数2为:");
                 b=xi.nextDouble();
               
         if(op.contentEquals("+"))
         {
           System.out.println("相加后的结果为:"+(a+b));   
         }else if(op.contentEquals("-"))
         {
           System.out.println("相加减的结果为:"+(a-b));
         }else if(op.contentEquals("*"))
         {
           System.out.println("相乘的结果为:"+(a*b));
         }else if(op.contentEquals("/"))
         {
           System.out.println("相除后的结果为:"+(a/b));
         }
2020-04-05 12:25
快速回复:这个程序如何写
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015717 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved