猿问

代码如何写才可以求出答案

package demo_0100;


public class Test {


/*

* ((((2+3)/5)*2)-2)

*

*

* ((2+3)/(5*2)-2)

*/

public static void main(String[] args) {

String str="((((2+3)/5)*2)-2)";

/*

* ((((2+3)

* (((5/5)*2)-2)

*/

System.out.println("length:"+str.length());

int left=0;

for(int i=0; i<str.length(); i++){

String temp=str.substring(i, i+1);

if(temp.equals(")")){

//找到第一个 )括号

String str2=str.substring(0, i);

//找到最后一个左括号

int lastLeftIndex=str2.lastIndexOf("(");

//截取最内层口号(2+3)的字符串

String numStr=str2.substring(lastLeftIndex+1);

//定义存储计算结果的变量

int numSum=0;

//===============================计算================================

for(int j=0; j<numStr.length(); j++){

//--------------------------------------------------------------

String str3=numStr.substring(j, j+1);

if(str3.equals("+")){

int leftNum=Integer.parseInt(numStr.substring(0, j));

int rightNum=Integer.parseInt(numStr.substring(j+1));

numSum=leftNum+rightNum;

break;

}else if(str3.equals("-")){

}else if(str3.equals("*")){

}else if(str3.equals("/")){

}

//--------------------------------------------------

}

//===========================使用计算的结果替换截取的字符串=======================================

str=str.replace("("+numStr+")", numSum+"");

System.out.println("替换之后:"+str);

}

}

System.out.println("left:"+left);

}


}


慕粉3735368
浏览 1396回答 1
1回答

阿旭_

import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public class test { public static void main(String[] args) throws Exception { String[] value_arr = new String[] { "((((2+3)/5)*2)-2)", "((2+3)/(5*2)-2)" }; for (int i = 0; i < value_arr.length; i++) { ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript"); System.out.println(value_arr[i] + "=" + jse.eval(value_arr[i])); } } }
随时随地看视频慕课网APP

相关分类

Java
我要回答