ALGO - 92 - - 접두사 표현 식 (정규 로 확장)
제목.
문제 설명 은 접두사 표현 식 을 문자열 로 입력 한 다음 값 을 계산 하 는 프로그램 을 만 듭 니 다.입력 형식 은 "연산 자 대상 1 대상 2" 입 니 다. 그 중에서 연산 자 는 "+" (덧셈), "-" (뺄셈), "*" (곱셈) 또는 "/" (나눗셈) 이 고 연산 대상 은 10 을 초과 하지 않 는 정수 입 니 다. 그들 사 이 는 빈 칸 으로 구분 합 니 다.요구: 가, 감, 승, 이 네 가지 연산 을 제외 하고 각각 해당 하 는 함 수 를 설계 하여 실현 합 니 다.입력 형식: 한 줄, 즉 접두사 표현 식 문자열 만 입력 하 십시오.출력 형식: 해당 하 는 계산 결 과 를 출력 합 니 다 (나눗셈 이 라면 c 언어의 "/" 연산 자 를 직접 사용 하고 결 과 는 정수 입 니 다).입 출력 샘플 입력 + 52 샘플 출력 7
제목 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//
String str = input.nextLine();
//
String[] arr = str.split(" ");
//
char[] letter = arr[0].toCharArray();
//
switch (letter[0]){
case '+':
System.out.println(Integer.parseInt(arr[1])+Integer.parseInt(arr[2]));
break;
case '-':
System.out.println(Integer.parseInt(arr[1])-Integer.parseInt(arr[2]));
break;
case '*':
System.out.println(Integer.parseInt(arr[1])*Integer.parseInt(arr[2]));
break;
case '/':
System.out.println(Integer.parseInt(arr[1])/Integer.parseInt(arr[2]));
break;
}
}
}
확 장 된 유 니 버 설 코드
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** * Created by nl101 on 2016/1/22. */
public class Main1 {
public static void main(String[] args) {
// ((12+2)-6)/2
String str = "/ - + 12 2 6 2";
System.out.println(prefix(str));
}
private static String prefix(String str){
//
Pattern p = Pattern.compile("[\\+\\-\\*\\/][\\s]\\d{1,}[\\s]\\d{1,}");
Matcher matcher = p.matcher(str);
//
while (matcher.find()){
// ,+ 12 2 14
String temp = calculate(matcher.group());
StringBuffer sb = new StringBuffer();
//
matcher.appendReplacement(sb,temp);
//
matcher.appendTail(sb);
str = sb.toString();
//
// str = matcher.replaceFirst(calculate(matcher.group()));
//
return prefix(str);
}
return str;
}
/** * , + 12 2 * @param str * @return */
private static String calculate(String str){
String[] arr = str.split(" ");
int i = 0;
char[] letter = arr[0].toCharArray();
switch (letter[0]){
case '+':
i = Integer.parseInt(arr[1])+Integer.parseInt(arr[2]);
break;
case '-':
i = Integer.parseInt(arr[1])-Integer.parseInt(arr[2]);
break;
case '*':
i = Integer.parseInt(arr[1])*Integer.parseInt(arr[2]);
break;
case '/':
i = Integer.parseInt(arr[1])/Integer.parseInt(arr[2]);
break;
}
return String.valueOf(i);
}
}
수준 이 높 지 않 습 니 다. 좋 은 건의 가 있 으 면 댓 글 을 환영 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Sql의 실행 순서가 어떻게 되는지 알려드릴게요.select*단지 당신이 Sql 대문에 들어서는 첫걸음일 뿐, 실제 업무에서 틀림없이 이렇게 간단하지 않을 것이다.우리 예를 하나 봅시다. 위의 요구 사항을 수행하려면 다음과 같이 Sql을 사용할 수 있습니다. 위의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.