2017-10-10 6 views
0

그래서 사용자가 지정한 입력 내에서 특정 문자를 찾으려고합니다. 이 문제에서, 사용자는 서식을 이용하여 영국 전화 번호를 입력Java - 입력에 대해 indexOf 메서드 사용

(XXXX) XXX XXXX 또는 지역 코드 괄호 내의 숫자에 의해 형성된다 (XXXXX) XXX XXX

및 개인 전화 번호는 그 이후의 숫자로 구성됩니다.

지금까지, 나는 시도 - 실패 -이되고 내 코드와 함께, 사용자의 입력 내의 닫는 대괄호를 찾기 위해 indexOf(String) 방법을 사용 :

import javax.swing.JOptionPane; 

public class L2ExerciseE { 
    public static void main(String[] args) { 
     String number = JOptionPane.showInputDialog("Please input thy number: "); 

     String areaCode = number.substring(1, indexOf(")")); 
     String telephoneNumber = number.substring((indexOf(")") + 1), 15); 
     System.out.println(); 

     System.out.println("The area code is: " + areaCode); 
     System.out.println("The telephone number: " + telephoneNumber); 
    } 
} 

나는이 문제가 자바 사용하기 때문에 발생하는 것으로 추측 컴파일러, 파이썬, 내 이전 언어, 통역을 사용하고, 비록 내가 다른 답변을 읽으려고했지만, 나는 그들을 이해하는 데 심각한 문제가 있습니다.

지나치게 복잡한 일없이 코드를 작동 시키려면 어떻게해야합니까? 잠시 동안 I/O 명령, 산술 명령, 기본 연결 및 .substring(), .indexOf().trim()과 같은 몇 가지 다른 명령 만 보았습니다.

미리 감사드립니다.

답변

4

indexOf()은 독립 실행 형 함수가 아닙니다 (Java에서는 독립 실행 형 함수가 아님) String에있는 메서드입니다. number.indexOf(")")을 사용해야합니다. ")"number입니다.

0

사용 정규식 패턴의 문서 :

String number = "(1234) 123 1234"; 
String pattern = "\\((\\d{4})\\) (\\d{3} \\d{4})|\\((\\d{5})\\) (\\d{3} \\d{3})"; 
Pattern r = Pattern.compile(pattern); 
Matcher m = r.matcher(number); 
if (m.find()) { 
    System.out.println("Found area code: " + m.group(1)); 
    System.out.println("Found personal number: " + m.group(2)); 
} 

정규식 기반 솔루션이 여기에 갈 수있는 방법이 될 수 있다는 이유 정확한 번호 패턴이 몇 가지 종류가있을 수 있다는 것입니다 . 예를 들어 둘 이상의 공백이있는 숫자는 유효한 것으로 간주 될 수 있으며 정규 표현식에서 쉽게 표현할 수 있습니다.

Demo

0

코드에서 하나의 실수가있다. 이것을 시도하십시오 : String areaCode = number.substring (1, number.indexOf (")")); String telephoneNumber = number.substring ((number.indexOf (")") +1), 15);