zoukankan      html  css  js  c++  java
  • 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 
    

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

  • 相关阅读:
    Mybatis配置数据库连接
    C# 解决httplistener querystring 中文乱码、返回json中文格式乱码
    C# Base64加解密、MD5加密
    C# 获取时间戳并从10进制时间戳转换成16进制byte数组
    win10删除文件夹需要Administrator权限
    WordPress所有页面404 分类页面导航也找不到文章
    Maven配置阿里云镜像
    Hexo部署GitHub Pages
    Linux常用命令集合
    jmeter性能测试入门使用参数化
  • 原文地址:https://www.cnblogs.com/sduycq/p/4525283.html
Copyright © 2011-2022 走看看