1. 程式人生 > >自己寫的計算器(加減乘除)代碼

自己寫的計算器(加減乘除)代碼

rar boolean private urn numbers 開始 判斷 當前 最終

首先是Calculator計算器類

package test;

public class Calculator {
    public int addition(int number1, int number2) {
        return number1+number2;
    }

    public int subtraction(int number1, int number2) {
        return number1-number2;
    }

    public int multiplication(int number1, int number2) {
        
return number1*number2; } public int divsition(int number1, int number2) { return number1/number2; } }

接下來是Execute運行類

package test;

import java.util.Scanner;

public class Execute {
    public static void main(String[] args) {
        System.out.println("請輸入算術表達式");
        Scanner in 
= new Scanner(System.in); String expression = in.nextLine(); expression=expression+"+1"; System.out.println("內部字符串改變為"+expression); //初始化開始 // char[] Cexpression=expression.toCharArray(); //創建運算器 Calculator calculator=new Calculator();
//數值列表 int[] numbers=new int[10]; int numbersindex=0; //轉型列表 char[] sub=new char[10]; //數值下標位置 int count=0; //符號列表 char[] symbols = new char[10]; int symbolsindex=0; //temp1是數值列表上一個數值,temp2是當前的數值 int temp1=0,temp2=0;; //符號 char symbol = 0; int flag=1; //初始化結束 //第一次遍歷 for (int i = 0; i < expression.length(); i++) { if(Cexpression[i]>=‘0‘&&sub[i]<=‘9‘){ sub[count++]=Cexpression[i]; }else{ //字符串轉型整型 temp2=transition(sub); //當flag=2時進行運算 if(flag==2){ flag=1; //獲取數值列表前一個數值; temp1=numbers[numbersindex-1]; //判斷symbol乘法還是除法,成功是乘法,失敗為除法 if(decide(symbol)){ temp2=calculator.multiplication(temp2,temp1); }else{ temp2=calculator.divsition(temp2,temp1); } //覆蓋前一個數值 numbersindex--; } //temp2存入數值列表 numbers[numbersindex++]=temp2; //獲取符號 symbol=Cexpression[i]; //轉型數值下標位置清零 count=0; //判斷是否大於flag,flag=2,不大於則加入到符號列表 if(judge(symbol)>flag){ flag=2; }else{ //加入到符號列表 symbols[symbolsindex++]=symbol; } } } //輸出數據結構 System.out.println("輸出數據結構"); for(int i:numbers){ System.out.print(i+" "); } System.out.println(); for(char i:symbols){ System.out.print(i); } System.out.println(); int temp=numbers[0]; count=0; for(int i=1;i<numbers.length;i++){ if(symbols[count]==‘+‘){ temp+=numbers[i]; count++; }else if(symbols[count]==‘-‘){ temp-=numbers[i]; count++; } } //輸出最終結果 System.out.println("結果為"+temp); //輸出數據結構 System.out.println("輸出數據結構"); for(int i:numbers){ System.out.print(i+" "); } System.out.println(); for(char i:symbols){ System.out.print(i); } } private static int judge(char symbol) { if(symbol==‘+‘){ return 1; }else if(symbol==‘-‘){ return 1; }else if(symbol==‘*‘){ return 2; }else if(symbol==‘/‘){ return 2; } return 0; } private static boolean decide(char symbol) { if(symbol==‘*‘){ return true; }else if(symbol==‘/‘){ return false; } return false; } private static int transition(char[] sub) { int temp=0; for(int i=0;i<sub.length;i++){ if(sub[i]>‘0‘&&sub[i]<‘9‘){ temp=temp*10; temp+=(sub[i]-‘0‘); } } return temp; } }

代碼還是很簡單的,主要有兩個列表,一個列表存數值,一個列表存符號,如果符號是乘法或者除法,則把當前的數值和數值列表最後的數值相乘或相除,然後覆蓋到數字列表的最後,如果不是,則存入數值列表的最後,符號列表添加當前的減法或者乘法

自己寫的計算器(加減乘除)代碼