TIL/2023

[0614] TIL

개발 공주 2023. 6. 15. 10:53
728x90

오늘은 이전에 배운걸 조금 복습을 했다.

우선 어제 만들었던 야구게임을 보고있었는데....  치명적오류? 내실수다...

System.out.print((count + 1) + "번째 시도 : ");
int num = scanner.nextInt();			//이부분
String user = Integer.toString(num);  
if(user.length() != 3){
    System.out.println("3자리만 입력하세요");
    continue;
}
Main.userNumber(user);

처음에 컴퓨터가 랜덤 숫자 3자리를 만들어주면 사용자가 맞추기 위해서 숫자를 입력을 한다...

나는 우선 int 타입으로 입력을 받고 String으로 형변환후에

private static void userNumber(String user) {
        usern.clear();
        if(user != null) {
            for (int j = 0; usern.size() < 3; ) {
                usern.add(user.charAt(j) - '0');
                j++;
            }
        }
        System.out.println(usern);
    }

usern 이라는 리스트에 담아줬다...

여기서가 문제이다....

처음 입력받을때 만약에 012를 입력을 했다고 하자

그러면 int 형이라서 12로 인식한다....ㅎ 앞에 0 을 빼버린다.. 그래서 아래 if문에 걸린다. ㅋㅋ 야레야레...

그래서 우선 스트링으로 입력받게 했다.

System.out.print((count + 1) + "번째 시도 : ");
String user = scanner.next();
if(user.length() != 3){
    System.out.println("3자리만 입력하세요");
    continue;
}
Main.userNumber(user);

잘 돌아간다. 문제는 한글도 들어간다는것이다...ㅋㅋ

 

이제 입력받은 user 변수를 정규표현식으로든 뭐든 숫자만 입력할 수 있게 유효성 검사를 해야할거 같다.

Pattern.matches("^[0-9]*$", user);

Pattern.matches(); 함수를 이용해서 숫자인지 유효성 검사를 함 해야겠다

if(!Pattern.matches("^[0-9]*$",user)){
    System.out.println("숫자를 입력해주세요.");
    continue;
}

이자식을 추가했다..ㅋ

숫자만 잘 들어온다!  해결쓰ㅋ 다른방법이 있는지 또 찾아봐야겠다

 

[블로그 정리]

예외처리 (4)

https://pink-love-princess.tistory.com/61

'TIL > 2023' 카테고리의 다른 글

[0616] TIL  (0) 2023.06.16
[0615] TIL  (0) 2023.06.16
[0613] TIL  (0) 2023.06.14
[0612] TIL  (0) 2023.06.13
[0607] 미니 프로젝트 TIL  (0) 2023.06.07