2012-12-20 4 views
0

사용자는 "123456789" 과 같은 숫자 배열을 입력 한 다음 사용자가 "PE" 과 같은 명령 문자열을 입력하고 내 프로그램이 문자열의 각 문자를 검사합니다.배열 문자열 비교

P = 입력 한 마지막 번호 9를 제거하십시오.
E = 최종 결과를 인쇄합니다.

이 시점까지 모든 것이 잘 작동했습니다.

하지만 내 문제는 사용자가 "P (임의의 숫자)"를 입력 할 때 명령을 읽을 수 있어야하고 그 번호를 숫자 배열의 끝에 배치해야한다는 것입니다.

따라서 P (4) 인 경우 결과는 "1234567894"가됩니다.

어떻게하면됩니까?

내가

if (commandList.get(x).equals("P(")) { 
    JOptionPane.showMessageDialog(null, "HI"); 
} 
else if (commandList.get(x).equals("P")) { 
    strList.remove(strList.size()-1); 
    x++; 
} 
+1

숫자 배열은 정수형입니까, 아니면 문자열 형입니까? 그러나이'commandList.get (x) .contains ("P (")' – Smit

+1

을 사용하여 시도해 볼 수 있습니다. 배열이 아니라 목록이있는 것 같습니다. 명확하게 편집하십시오 – Bohemian

답변

0

지금까지 내가 이해 P와 E를 위해 지금 무엇을 가지고, 문제는 추출물 문자열 "P에서 '자리'(자리에있다) "?

예를 들어 '('및 ')'와 같이 경계 문자를 검색하여 입력 문자열을 구문 분석해야합니다. 그런 식으로 예를 들어 :로부터

String s = "P(3)"; 
String number = s.substring(s.indexOf("(") + 1, s.indexOf(")")); 
strList.append(number); 

그러나이 또한 bracktes 내 아무것도을 받아 들일 것, 예를 들어, "foooo" "P (foooo)", 그리고 그것을 찾을 수 없습니다 ')'경우 충돌 것 , 예를 들어, s = "P (123", "P (3) blah54"를 받아 들일 것입니다.) 파서를 향상 시키려면 정규식을 사용할 수 있습니다. 예를 들어, 입력이 정확하게 명시 적으로 int로 숫자를 캐스팅하려면 양식을 "P (2)"정확히 한 자리를 위해, 당신은

String s = "P(3)"; 
if (!s.matches("P\\(\\d\\)")) 
    throw new RuntimeException("invalid input format: " + s); 
String number = s.substring(s.indexOf("(") + 1, s.indexOf(")")); 
strList.append(number); 

을 사용할 수 있습니다, 당신은있는 Integer.parseInt를 보라 (...) 수 예 :

int i = Integer.parseInt(number);