Java 문자열을 산술 표현식으로 변환하여 결과를 계산하고 출력하는 코드
package cn.anycall.test;
import java.math.BigDecimal;
public class TestSHU {
public static String addBigDecimal(String a, String b) {
double a1 = Double.parseDouble(a);
double b1 = Double.parseDouble(b);
BigDecimal a2 = BigDecimal.valueOf(a1);
BigDecimal b2 = BigDecimal.valueOf(b1);
BigDecimal c2 = a2.add(b2);
String c1 = c2 + "";
return c1;
}
public static String reduceBigDecimal(String a, String b) {
double a1 = Double.parseDouble(a);
double b1 = Double.parseDouble(b);
BigDecimal a2 = BigDecimal.valueOf(a1);
BigDecimal b2 = BigDecimal.valueOf(b1);
BigDecimal c2 = a2.subtract(b2);
String c1 = c2 + "";
return c1;
}
public static String multipliedString(String a, String b) {
double a1 = Double.parseDouble(a);
double b1 = Double.parseDouble(b);
BigDecimal a2 = BigDecimal.valueOf(a1);
BigDecimal b2 = BigDecimal.valueOf(b1);
BigDecimal c2 = a2.multiply(b2);
String c1 = c2 + "";
return c1;
}
public static String divideString(String a, String b) {
double a1 = Double.parseDouble(a);
double b1 = Double.parseDouble(b);
BigDecimal a2 = BigDecimal.valueOf(a1);
BigDecimal b2 = BigDecimal.valueOf(b1);
BigDecimal c2 = a2.divide(b2,a2.scale());
String c1 = c2 + "";
return c1;
}
public static String yunsuanjibie(String s) {
String r = "";
int p = 0;
for (int i = 0; i < s.length(); i++) {
|| s.charAt(i) == '/') {
p++;
}
}
int k1 = 0;
int first = 0;
for (int i = 0; i < s.length(); i++) {
|| s.charAt(i) == '/') {
k[k1] = s.substring(first, i);
k1++;
k[k1] = "" + s.charAt(i);
k1++;
first = i + 1;
}
}
k[k1] = s.substring(first, s.length());
int kp = p;
while (kp > 0) {
for (int i = 0; i < k.length; i++) {
int l;
for (l = i - 1; l > -1; l--) {
if (!(k[l].equals("p")))
break;
}
int q;
for (q = i + 1; q < k.length; q++) {
if (!(k[l].equals("p")))
break;
}
k[i] = ""+ multipliedString(k[l],k[q]);
k[l] = "p";
k[q] = "p";
kp--;
} else {
k[i] = ""+divideString(k[l],k[q]);
k[l] = "p";
k[q] = "p";
kp--;
}
break;
}
}
if (k[i].equals("+") || k[i].equals("-")) {
int l;
for (l = i - 1; l > -1; l--) {
if (!(k[l].equals("p")))
break;
}
int q;
for (q = i + 1; q < k.length; q++) {
if (!(k[q].equals("p")))
break;
}
if (k[i].equals("+")) {
k[i] = ""+addBigDecimal(k[l],k[q]);
k[l] = "p";
k[q] = "p";
kp--;
} else {
k[i] = ""+reduceBigDecimal(k[l],k[q]);
k[l] = "p";
k[q] = "p";
kp--;
}
break;
}
}
for (int i = 0; i < k.length; i++) {
if (!(k[i].equals("p"))) {
r = k[i];
break;
}
}
}
return r;
}
public static void sizeyunsuan(String s) {
while (true) {
int first = 0;
int last = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(')
first = i;
if (s.charAt(i) == ')') {
last = i;
break;
}
}
if (last == 0) {
System.out.println(yunsuanjibie(s));
return;
} else {
String s1 = s.substring(0, first);
String s2 = s.substring(first + 1, last);
String s3 = s.substring(last + 1, s.length());
s = s1 + yunsuanjibie(s2) + s3;
}
}
}
public static void main(String[] args) {
sizeyunsuan(s);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.