2.문자열에서 숫자 추출하기
- 화면에서 사용자 입력을 받음.
- 화면 아래 '계산' 버튼을 클릭하면, 사용자가 입력한 문자열에서 숫자만 추출한 후,
그 숫자를 모두 더한 값을 출력할 것
[코드 설명]
<MyFrame()클래스>
-MyFrame() 클래스 내부에서 이벤트 처리할 수 있도록
JFrame 상속받는 동시에 ActionListener도 implement 시켜두었다.
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() 객체 생성시킴
}
[실행결과화면]
'Java > [학교] Java_GUI' 카테고리의 다른 글
자바_GUI_캡쳐 프로그램 (0) | 2021.12.12 |
---|---|
[과제] 자바_GUI_2진수를 10진수로 만드는 간단한 프로그램 (0) | 2021.12.12 |
[과제] 자바_GUI_ 소수 판별 및 출력 (0) | 2021.12.12 |
[과제] 자바_연결리스트_구현 (0) | 2021.12.12 |
자바_프로젝트_스윙_(리듬게임) (0) | 2021.12.12 |