java初学笔记--简单计算器的实现
刚开始学习java编程,希望在这里记录一下自己的学习经历。自己本是学硬件的,以前有过c编程的经验,在这样的一个题目中,感觉到java取消指针的做 法带来的一些不便。由于对函数库的list类的不熟悉,写算法时经历了一些波折,下面这段代码只实现了三位数字的简单加减乘除。(即a+b*c型)
1 import java.util.Scanner; 2 3 4 public class Caculater { 5 public static void main(String[] args) { 6 while(true){ 7 int i = 0; 8 int flagCount = 0; 9 int[] flag =new int[2]; 10 double sum = 0 ; 11 String[] input = new String[5]; 12 double[] num = new double[3]; 13 char[] sig = new char[2]; 14 char[] b = new char[40]; 15 System.out.println("请输入算式(格式如:a+b/c,按enter键结束)"); 16 Scanner numPut = new Scanner(System.in); 17 String a =numPut.next();//输入部分 18 /* 19 * 数字处理部分,实现把字符串向数字h和符号转换 20 * 21 * */ 22 //System.out.println(a.length()); 23 while(i<a.length()){ 24 b[i] = a.charAt(i);//将字符串赋值给char型数组 25 i++; 26 } 27 for(int j = 0;j<a.length();j++){//提取符号所在的位置 28 if((b[j]=='+')||(b[j]=='-')||(b[j]=='/')||(b[j]=='*')){ 29 flag[flagCount] =j; 30 flagCount++; 31 } 32 } 33 sig[0] = b[flag[0]];//从输入中提取符号 34 sig[1] = b[flag[1]]; 35 36 37 input[0] = new String(b,0,flag[0]);//提取数字 38 input[1] = new String(b,flag[0]+1,flag[1]-flag[0]-1); 39 input[2] = new String(b,flag[1]+1,a.length()-flag[1]); 40 41 42 for (int j = 0; j < 3; j++) {//利用包装类,把提取的数字变为double 43 num[j] = Double.parseDouble(input[j]); 44 //System.out.println(num[j]); 45 } 46 47 48 // System.out.println(sig[0]); 49 // System.out.println(sig[1]); 50 // System.out.println(input[0]); 51 // System.out.println(input[1]); 52 // System.out.println(input[2]); 53 //计算部分 54 if(sig[1] =='*'||sig[1]=='/'){//sig[1]为乘除法时 55 switch(sig[1]){ 56 case '*': 57 sum += num[1]*num[2]; 58 break; 59 case '/': 60 sum += num[1]/num[2]; 61 break; 62 } 63 switch (sig[0]) { 64 case '+': 65 sum += num[0]; 66 break; 67 case '-': 68 sum = num[0]-sum; 69 break; 70 case '*': 71 sum *= num[0]; 72 break; 73 case '/': 74 sum = num[0]/sum; 75 break; 76 } 77 }else{ 78 //sign[1]不为乘除的时候 79 switch (sig[0]) { 80 case '+': 81 sum += num[0]+num[1]; 82 break; 83 case '-': 84 sum = num[0]-num[1]; 85 break; 86 case '*': 87 sum = num[0]*num[1]; 88 break; 89 case '/': 90 sum = num[0]/num[1]; 91 break; 92 } 93 switch(sig[1]){ 94 case '+': 95 sum += num[2]; 96 break; 97 case '-': 98 sum -= num[2]; 99 break; 100 } 101 } 102 System.out.println("结果是"+sum); 103 } 104 } 105
这篇文章以前写在其他的地方,总的感受觉得博客园的环境更加的去功利化,于是把文章移到此处。许久之前所做,思路很简单,权作大家的参考。