저는 Java를 처음 사용하고 프로그래밍에 비교적 익숙하지 않습니다. 위의 코드에서 c String이 (*, /, +, -, (,), ^) 값 중 하나를 포함하는지 확인하는 일종의 조건을 추가해야합니다. 지침 (코드 "B"로 표시된 위치)if/for 다중 문자열을위한 루프 조절
기타 관련 질문은 여기에 도움이되지 않았습니다. 아마도 나는 이것을 달성하기 위해 잘못된 도구를보고 있습니다. 나는 이걸로 무엇을 해야할지 모르겠다. if와 B 섹션을 내가 관심있는 모든 값에 대해 복사하는 것 외에는 (아주 우아한 방식이 아니라면 인정해야한다.)
도움이 많이 감사합니다!
private static void convertOnpToInf(String onp) {
Stack stack = new Stack();
try {
for (int i=0; i<onp.length(); i++) {
String c = String.valueOf(onp.charAt(i));
if (c.matches("[a-z]+")) {
stack.push(c);
// B 섹션 내가 제대로 이해를 바랍니다
} else {
if (stack.isEmpty()) {
throw new Exception("error");
}
String a = stack.pop();
if (stack.isEmpty()) {
throw new Exception("error");
}
String b = stack.pop();
if (addBracket(convertToOperator(c), onp, i)) {
stack.push("(" + b + c + a + ")");
} else {
stack.push(b + c + a);
}
는이 코드를 설명 할 수 좀 더 여기에 그것을 할 수있는 2 가지 방법이 있습니다? 왜 두 번 스택을 터뜨리는거야? – Brian
큰 프로그램 ( ~ 변환기)의 일부입니다 - 스택을 두 번 터뜨리는 것은 알고리즘의 일부이지만 내 문제와는 전혀 무관하다고 생각합니다. –
user2746475
'c '가'*, /, +, -와 같아야합니다. (,), ^', 왜 당신은 "az"에서 적어도 하나의 char에 매치하고 있습니까? – Daniel