xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 5KB
    文件類型: .java
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2022-05-29
  • 語言: Java
  • 標(biāo)簽: 計(jì)算器??

資源簡介

一個用Java實(shí)現(xiàn)的計(jì)算器小功能, 可以支持加減乘數(shù), 以及括號運(yùn)算

資源截圖

代碼片段和文件信息

import?java.util.ArrayList;
import?java.util.List;
import?java.util.StringTokenizer;


public?class?CalcDemo?{

/**
?*?@param?args
?*/
public?static?void?main(String[]?args)?{
System.out.println(exec(“-8*(((-2+4)+3)/((-1-5)*-2)-5)“));

}

/**
?*?
?*?@param?exp
?*????????????帶括號的四則表達(dá)式
?*?@return?運(yùn)算結(jié)果
?*/
public?static?double?exec(String?exp)?{

//?有括號
//?-8*(((-2+4)+3)/((-1-5)*-2)-5)


int?leftIndex?=?exp.lastIndexOf(‘(‘);?//?16

if?(leftIndex?==?-1)?{
//?沒有括號
//?System.out.println(“calc“?+?exp);
return?calc(exp);
}?else?{
//?如果有括弧,調(diào)用exec
//?System.out.println(“exec“?+?exp);
//?先找最里面的(位置?再找對應(yīng)的)位置

//?(-1-5)*-2)-5)?21
int?rightIndex?=?exp.substring(leftIndex).indexOf(‘)‘)?+?leftIndex;

//?去獨(dú)立的表達(dá)式,運(yùn)算?calc(-1-5)
double?res?=?calc(exp.substring(leftIndex?+?1?rightIndex));
//?重新組織表達(dá)式
exp?=?exp.substring(0?leftIndex)?+?res
+?exp.substring(rightIndex?+?1);
//?-8*(((-2+4)+3)/(?-6?*-2)-5)
return?exec(exp);
}
//?如果沒有括弧?直接調(diào)用calc

}

/**
?*?
?*?@param?exp
?*????????????不帶括號的四則表達(dá)式
?*?@return?運(yùn)算結(jié)果
?*/
public?static?double?calc(String?exp)?{
//?1?.?獲取所有四則運(yùn)算的數(shù)字
List?numbers?=?sliptNumbers(exp);
//?2.?獲取所有四則運(yùn)算的操作符號
List?ops?=?sliptOps(exp);
//?3.?先乘車運(yùn)算
//?遍歷運(yùn)算符中的*和/
for?(int?i?=?0;?i? //?*?/
//?獲取運(yùn)算符(不移除)
char?op?=?ops.get(i);

//?如果是?*?或者?/,?從運(yùn)算符的容器中移除,同是從數(shù)字容器中到對應(yīng)該運(yùn)算符位置的兩個數(shù)字(移除數(shù)據(jù),后面所有數(shù)據(jù)往前順序移動)
if?(op?==?‘*‘?||?op?==?‘/‘)?{
//?從運(yùn)算符的容器中移除
ops.remove(i);//?移除當(dāng)前位置

//?從數(shù)字容器中獲取對應(yīng)該運(yùn)算符位置的兩個數(shù)字(移除)
double?d1?=?numbers.remove(i);
double?d2?=?numbers.remove(i);

//?運(yùn)算
d1?=?op?==?‘*‘???d1?*?d2?:?d1?/?d2;

//?把運(yùn)算結(jié)果插入到數(shù)字容器中的i位置
numbers.add(i?d1);//?插入到i的位置?原來從i位置一直到最后的數(shù)據(jù),都要往后瞬移一位
//?numbers.set(i?d1);//設(shè)置i位置上的數(shù)據(jù)為d1其余不變
i--;//?移除后,后面所有運(yùn)算符往前移動,為了保證下一個運(yùn)算符不被遺漏,所以i--
}//?end?if?(op?==?‘*‘?||?op?==?‘/‘)?{

}//?end?for?(int?i?=?0?;?i?
//?4.?再加減運(yùn)算
while?(!ops.isEmpt

評論

共有 條評論