class Main {
public static void main(String[] args) {
String line = "aa 11 bb 22 cc 33 dd 44";
System.out.println(solution1(line));
}
static int solution1 (String s) {
int sum = 0;
String[] strArr = s.split(" ");
for(int i = 0; i < strArr.length; i++) {
if (strArr[i].matches("\\d+")) {
sum += Integer.parseInt(strArr[i]);
}
}
return sum;
}
}
위의 코드는 String line 변수에 들어간 값에서 숫자만 뽑아서 그 숫자들을 전부 더하는 코드이다.
여기에서 중요한건 matches("\\d+") 라는 코드가 제일 중요하다.
matches는 String 타입으로 선언한 변수여도 변수에 들어간 값이 문자인지 숫자인지 구분을 해준다.
에를 들어서
class Main {
public static void main(String[] args) {
String a = "10";
if(a.matches("\\d+")) {
System.out.println("정수이다");
} else {
System.out.println("정수가 아니다.");
}
}
}
위의 코드가 있을 때 위의 코드의 결과는 "정수이다" 라는게 나오게 된다.
String a 라는 변수에 들어간 리터럴은 10 인데 이 10 이 int 타입의 정수 10이 아닌 String 타입의 문자 10 이지만
matches 라는 것이 문자 10을 int 타입처럼 확인을 하게 해준다.
그렇기 때문에 이 matches 라는 것을 통해서 String line 에 들어간 값 중 숫자만 뽑아서 더해서 출력할 수 있다.
class Main {
public static void main(String[] args) {
String line = "aa 11 bb 22 cc 33 dd 44";
System.out.println(solution1(line));
}
static int solution1 (String s) {
int sum = 0;
String[] strArr = s.split(" ");
for(int i = 0; i < strArr.length; i++) {
if (strArr[i].matches("\\d+")) {
sum += Integer.parseInt(strArr[i]);
}
}
return sum;
}
}
다시 돌아와서 위의 코드를 봤을 때 solution1 을 하나 만들어주고 int sum 으로 모든 값을 더할 변수 하나 선언해준 후
String 타입으로 배열을 하나 만들어주는데 s.split(" ") 으로 빈칸을 하나 주고 뽑는다.
그리고 for문을 통해서 strArr.length 만큼 for문을 돌리는데 if 문안에 matches를 통해서 strArr[i] 에 정수 값이
들어가게 된다면 아까 만든 값이 없는 변수인 sum에다가 그 값을 더하는데 아직 String 타입이니까 그걸
Integer.parseInt(strArr[i]) 를 통해서 String 타입을 int 타입으로 변환해서 sum에다가 더한다 라는 뜻이다.
그렇게 하면 String line 에 있는 숫자 값인 11 , 22 , 33 , 44 가 더한 값이 출력이 되게 된다.
'Java' 카테고리의 다른 글
| 나 혼자 자바 공부하기 (클래스) (0) | 2022.10.03 |
|---|---|
| 2022-09-30 자바 (최대값 구하기) (0) | 2022.09.30 |
| 2022-09-16 자바 (1) | 2022.09.16 |
| 2022-09-14 자바 (접근 제어자, getter/setter, 에러처리) (0) | 2022.09.14 |
| 2022-09-13 자바 수업 (interface,implements) (0) | 2022.09.13 |
댓글