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 

这篇文章以前写在其他的地方,总的感受觉得博客园的环境更加的去功利化,于是把文章移到此处。许久之前所做,思路很简单,权作大家的参考。

原文地址:https://www.cnblogs.com/sduycq/p/4525283.html