[과제] 자바_GUI_긴문자열에서 숫자만 추출해오기

728x90

2.문자열에서 숫자 추출하기

- 화면에서 사용자 입력을 받음.

- 화면 아래 '계산' 버튼을 클릭하면, 사용자가 입력한 문자열에서 숫자만 추출한 후,

                                                                                             그 숫자를 모두 더한 값을 출력할 것

                                                                                                                                                  

[코드 설명]

<MyFrame()클래스>

-MyFrame() 클래스 내부에서 이벤트 처리할 수 있도록

             JFrame 상속받는 동시에 ActionListenerimplement 시켜두었다.

class MyFrame extends JFrame implements ActionListener{

             //필드

             private JPanel panel;

             private JButton cal;

             private JTextArea input;

             private JTextField output;

            

             //생성자

             public MyFrame() {

                           this.setSize(350, 300); //프레임 크기 지정

                           this.setLocationRelativeTo(null); //창 윈도우 정 중앙 배치

                           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                                                                                //창 종료시 프로그램도 함께 종료 설정

                           this.setTitle("자바 과제 2");

                           setLayout(new BorderLayout());

                          

                           panel = new JPanel(); //패널 객체 생성

                          

                           //input 텍스트

                           input = new JTextArea(10, 30);

 

                           //output 텍스트

                           output = new JTextField(10);

                           output.setEditable(false); //사용자가 편집 불가능하도록 설정

                          

                           //계산 버튼

                           cal = new JButton("계산");

                           cal.addActionListener(this);

                          

                           //패널에 버튼 컴포넌트 추가

                           panel.add(cal);

                           panel.add(output);

                          

                           //프레임에 TextArea와 패널 추가

 

                           add(input, BorderLayout.NORTH); //프레임 위쪽 배치

                           add(panel, BorderLayout.CENTER); //중앙에 배치

                          

                           pack(); //꽉 차게 설정

                           this.setVisible(true); //위의 설정이 화면에 보이도록 true값 설정

             }

                                                                                                                                                        

<이벤트 처리> actionPerformed() 메소드 재정의

-input 창에 사용자로부터 문자열 입력 받고 계산 버튼 누르면 숫자만 추출해서 그 합을 output에 보여야 함.

-이를 구현하기 위해 (1) 입력받은 문자열을 공백 단위로 잘라준 뒤, : split()메소드 이용

                            (2) 각 문자열에 대해 숫자형 문자를 추출하여 int형으로 변환시킨 뒤,

                            (3) 해당 숫자들을 합한 sum을 구했다.

public void actionPerformed(ActionEvent e) {
		if(e.getSource() == cal ) { //‘검색’ 버튼 눌리면 이벤트 처리

			String str = input.getText(); //입력 문자열 받아서 

			String text[] = str.split(" "); 
			//공백 기준으로 문자열 자른 후, text[i] 배열에 자른 문자열 저장
			
			int sum = 0; 
			for(int i=0; i<=text.length; i++) { //text 배열 요소 개수 만큼 반복
					
				int answer = 0;

				//char형으로 변환시켜 각각의 문자에 접근 
				for(char x : text[i].toCharArray()) { 

				 if(x>=48 && x <= 57) { //‘0’ ~ ‘9’ 문자 발견 시 
					 answer = answer*10+(x-48); 
						//그 값을 숫자로 변환시켜 answer에 붙여저장 
				 }	
				}
				sum += answer; //자른 문자열 속 숫자합 누적해서 구함
				output.setText("" + sum);//해당 sum값으로 세팅 
			}	
		}
	}
}

                                                                                                                                                       

<실행 main>

public class home_2 {

             public static void main(String[] args) {

                           new MyFrame();// 위의 기능 구현할 수 있도록 MyFrame() 객체 생성시킴

             }

 

 

[실행결과화면]

728x90