「java字符串运算」java字符串算法

博主:adminadmin 2023-01-22 06:57:05 993

本篇文章给大家谈谈java字符串运算,以及java字符串算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java 怎么 字符串进行运算? 如:String str = "(((12 -2) * 5 ) /2) +30"; 最好要有代码。

如果你说的是用一个counter(String

str)的方法调用后得到str的计算结果话

2个数字加一个运算符,3个一组进行计算,得到一个数字,加另一个数字和运算符继续计算

需要注意string中连续的数字要整合成一个数字

加上括号的时候运算顺序要小心,特别注意括号前有计算数字,比如5+(2+5)

括号后面有乘除法运算,比如5+(2+5)/2

括号算完了要继续算后面的除法,之后用得到的数字加上前面的加号运算符和‘5’一起运算,算法思想就是这样了

要是有堆栈就建俩堆栈,一个运算符,一个数字

没括号的:数字压栈,符号压栈,数字压栈,判断下一个符号是否为乘除号,不是数字退栈,符号退栈,数字退栈,计算,得到结果,数字压栈,是乘除号,继续符号压栈,数字压栈,数字退栈,符号退栈,数字退栈,计算,数字压栈,数字退栈,符号退栈,数字退栈,计算,数字压栈

要是有括号:遇到括号后,正括号压栈,数字压栈,符号压栈,数字压栈,数字退栈,符号退栈,数字退栈,计算,得到结果……(与不加括号的情况一样)……直到遇到反括号,将正括号退栈,先看后面是否有乘除符号,若没有,看看符号栈是否为空,若不为空说明是括号前有运算的情况,将整个括号得到的数值当做数字压栈后按不带括号的处理,后面有乘除法,先乘除然后作为一个数字继续运算

用数组就建立2个数组,2个int型变量作为数组指针,一个存符号,一个存数字,方法与用堆栈相同

代码量一般,0分完全没有写代码的欲望啊,不过我的算法是正确的,望采纳

Java 字符串算术表达式求值

Java 字符串算术表达式求值:

import java.util.ArrayList;

import java.util.Stack;

/**

*

* @author yhh

*

*/

public class Calculate {

/**

* 将字符串转化成List

* @param str

* @return

*/

public ArrayListString getStringList(String str){

ArrayListString result = new ArrayListString();

String num = "";

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

if(Character.isDigit(str.charAt(i))){

num = num + str.charAt(i);

}else{

if(num != ""){

result.add(num);

}

result.add(str.charAt(i) + "");

num = "";

}

}

if(num != ""){

result.add(num);

}

return result;

}

/**

* 将中缀表达式转化为后缀表达式

* @param inOrderList

* @return

*/

public ArrayListString getPostOrder(ArrayListString inOrderList){

ArrayListString result = new ArrayListString();

StackString stack = new StackString();

for (int i = 0; i inOrderList.size(); i++) {

if(Character.isDigit(inOrderList.get(i).charAt(0))){

result.add(inOrderList.get(i));

}else{

switch (inOrderList.get(i).charAt(0)) {

case '(':

stack.push(inOrderList.get(i));

break;

case ')':

while (!stack.peek().equals("(")) {

result.add(stack.pop());

}

stack.pop();

break;

default:

while (!stack.isEmpty() compare(stack.peek(), inOrderList.get(i))){

result.add(stack.pop());

}

stack.push(inOrderList.get(i));

break;

}

}

}

while(!stack.isEmpty()){

result.add(stack.pop());

}

return result;

}

/**

* 计算后缀表达式

* @param postOrder

* @return

*/

public Integer calculate(ArrayListString postOrder){

Stack stack = new Stack();

for (int i = 0; i postOrder.size(); i++) {

if(Character.isDigit(postOrder.get(i).charAt(0))){

stack.push(Integer.parseInt(postOrder.get(i)));

}else{

Integer back = (Integer)stack.pop();

Integer front = (Integer)stack.pop();

Integer res = 0;

switch (postOrder.get(i).charAt(0)) {

case '+':

res = front + back;

break;

case '-':

res = front - back;

break;

case '*':

res = front * back;

break;

case '/':

res = front / back;

break;

}

stack.push(res);

}

}

return (Integer)stack.pop();

}

/**

* 比较运算符等级

* @param peek

* @param cur

* @return

*/

public static boolean compare(String peek, String cur){

if("*".equals(peek) ("/".equals(cur) || "*".equals(cur) ||"+".equals(cur) ||"-".equals(cur))){

return true;

}else if("/".equals(peek) ("/".equals(cur) || "*".equals(cur) ||"+".equals(cur) ||"-".equals(cur))){

return true;

}else if("+".equals(peek) ("+".equals(cur) || "-".equals(cur))){

return true;

}else if("-".equals(peek) ("+".equals(cur) || "-".equals(cur))){

return true;

}

return false;

}

public static void main(String[] args) {

Calculate calculate = new Calculate();

String s = "12+(23*3-56+7)*(2+90)/2";

ArrayList result = calculate.getStringList(s); //String转换为List

result = calculate.getPostOrder(result); //中缀变后缀

int i = calculate.calculate(result); //计算

System.out.println(i);

}

}

java中,如何将字符串里的数字进行运算!

字符串里包含数字,首先要使用正则表达式将其中的数字提取出来,正则写法为: "^[0-9]*[1-9][0-9]*$"; 然后用Integer函数将其转换为数字类型,就可以进行您所需要的运算了。

Integer是其包装类,注意是一个类,用法例子:int num2=Integer.parseInt("12");

Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

java字符串运算的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java字符串算法、java字符串运算的信息别忘了在本站进行查找喔。