自己做的一种计算器算法的设计..不知道代码是否有bug

 1 package Test;
 2 import java.util.Scanner;
 3 /**
 4  * 设计一个计算器,实现多行输入,并分别输出结果
 5  * 输入:
 6  *     4/2+5+9*7-9
 7  *  3*2+8/2-7+2
 8  *  3+8*4-5+3+1
 9  *  9/4/2+7-6-1
10  * 输出:
11  *     61
12  *  5
13  *  34
14  * @author litaiqing
15  *
16  */
17 public class Test {
18     public static void main(String[] args) {
19         Scanner scanner = new Scanner(System.in);
20         while(scanner.hasNext()){
21             String in = scanner.nextLine();
22             System.out.println(calc(in));
23         }
24     }
25     public static int calc(String in){
26         int result = 1;
27         if(in.contains("+")){
28             String[] nums = in.split("\\+");
29             result = calc(nums[0]);
30             for(int i = 1; i < nums.length; i++){
31                 result += calc(nums[i]);
32             }
33         }else if(in.contains("-")){
34             String[] nums = in.split("\\-");
35             result = calc(nums[0]);
36             for(int i = 1; i < nums.length; i++){
37                 result -= calc(nums[i]);
38             }
39         }else if(in.contains("*")){
40             String[] nums = in.split("\\*");
41             result = calc(nums[0]);
42             for(int i = 1; i < nums.length; i++){
43                 result *= calc(nums[i]);
44             }
45         }else if(in.contains("/")){
46             String[] nums = in.split("/");
47             result = calc(nums[0]);
48             for(int i = 1; i < nums.length; i++){
49                 result /= calc(nums[i]);
50             }
51         }else{
52             result = Integer.parseInt(in);
53         }
54         return result;
55     }
56 }

输出

4/2+5+9*7-9
61
3*2+8/2-7+2
5
3+8*4-5+3+1
34
9/4/2+7-6-1
1

时间: 2024-10-13 02:36:24

自己做的一种计算器算法的设计..不知道代码是否有bug的相关文章

模板化的七种排序算法,适用于T* vector&lt;T&gt;以及list&lt;T&gt;

最近在写一些数据结构以及算法相关的代码,比如常用排序算法以及具有启发能力的智能算法.为了能够让写下的代码下次还能够被复用,直接将代码编写成类模板成员函数的方式,之所以没有将这种方式改成更方便的函数模板纯属于偷懒,更方便于测试代码的有效性,等代码写完也懒得去改了.下面开始介绍这段代码,有什么不对的地方欢迎前来指正. 一共写了七种排序,插入排序InsertSort.堆排序HeapSort.快速排序QuickSort.合并排序MergeSort,计数排序CountingSort,基数排序RadixSo

总结N种排序算法及实现

排序算法是一个简单的问题,但在此问题上却有大量的研究!当前的排序算法通常按照如下四个方面进行分类(或是评价): 1.时间复杂度:一个排序算法的理想性能是O(n).一般而言,好的性能O(nlogn),坏的性能O(n2). 2.空间复杂度(内存使用量) 3.稳定性:稳定的排序算法会让原本有相等键值的记录维持原本的相对次序. 4.排序方式:插入.交换.选择.合并等 一.冒泡排序:这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端. 步骤:1.比较相邻的两个元素,如果第一个比第二个大,就

图像处理之增强---图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法

申明:本文非笔者原创,原文转载自:http://blog.csdn.net/onezeros/article/details/6342661 两组图像:左边较暗,右边较亮 第一行是原图像,他们下面是用四种算法处理的结果 依次为: 1.一种混合算法 2.msr,multi-scale retinex 3.msrcr,multi-scale retinex with color restoration 4.ssr,single scale retinex           源码,retinex算法

八种排序算法(内部排序)

八种排序算法很长时间没有使用了,今天做一个总结,方便以后自己用的时候参考. 这八种排序算法都是内部算法,这八种排序算法分别是: 1. 插入排序 1)直接插入排序 2)希尔排序 2.选择排序 1)简单选择排序 2)堆排序 3.交换排序 1)冒泡排序 2)快速排序 4.归并排序 5.基数排序 一.直接插入排序 将一个记录插入到已经排好序的有序表中,从而得到一个新的.记录数增1的有序表.在实际操作中,先将序列的第一个记录看成是一个有序的子序列,然后从第二个.第三个.……记录逐个进行插入,直至整个序列有

12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用

出处:http://blog.csdn.net/han_xiaoyang/article/details/12163251. 声明:版权所有,转载请注明出处,谢谢. 0.前言 从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算法题逐个分析一遍(博主当年自己学算法就是用这种比较笨的刷题学的,囧),不过又想了想,算法这东西,博主自己学的过程中一直深感,基础还是非常重要的,很多难题是基础类数据结构和题目的思想综

几种排序算法的C++实现——快速排序、堆排序、基数排序

排序算法是非常常见的面试笔试问题,考查的一个人的基本功,本文将一些排序做了C++的实现,就当是做个学习总结吧. 1.快速排序 快速排序的中心是填坑法,取一个数(这里选取第一个数)作为基准数temp,从队尾开始寻找第一个比基准数小的数a[j],交换a[j]和temp,然后队首开始查找第一个比temp大的数a[i],交换之,遍历的结果是当i>=j时,temp左边的数都小于temp,后边的数都大于temp,这个有点像归并排序.最后利用递归调用完成排序,代码如下: 1 void QuickSort(in

八种排序算法效率比较

从刚上大一那会儿学的C语言开始,就已经接触到了不少排序算法,但当时都只是为了完成简单的排序任务而已,而且所给的数据也不够多,所以看不出各个排序算法间的执行效率的优劣.最近有个数据结构课程设计的实验,是有关于排序算法之间的效率比较,我就顺便把它放上来了,并对各个算法执行的效率时间做了柱形统计图表.此次实验主要测试了8种排序算法:插入排序.快速排序.冒泡排序.希尔排序.简单选择排序.堆排序.归并排序.折半插入排序. 总共建立了三种情况,分别是平均排序.最好情况排序.最坏情况排序.第一种情况就是使用了

几种排序算法及Java实现排序的几种方式

几种排序算法 下面的例子介绍了4种排序方法: 冒泡排序, 选择排序, 插入排序, 快速排序 1 package date201709.date20170915; 2 3 public class SortUtil { 4 5 private static int quickSortTimes = 1; 6 7 /** 8 * 冒泡排序:<br> 9 * 两层循环,每次循环比较前后两个元素,如果他们的顺序错误就把他们交换过来,一次循环后最终会把最大的数沉到数列的末端<br> 10 *

7种查找算法详解(转)

1. 顺序查找 说明:顺序查找适合于存储结构为顺序存储或链接存储的线性表. 基本思想:顺序查找也称为线形查找,属于无序查找算法.从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功:若扫描结束仍没有找到关键字等于k的结点,表示查找失败. 复杂度分析: 查找成功时的平均查找长度为:(假设每个数据元素的概率相等) ASL = 1/n(1+2+3+-+n) = (n+1)/2 ; 当查找不成功时,需要n+1次比较,时间复杂度为O(n); 所以,顺序查找的