자바 초급문제로 맨땅에 해딩하기

자바 초급문제 1. 문자열다루기 기본

Jungsoomin :) 2020. 3. 23. 21:47

프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/12918)

자바 +  초급문제 의 문자열다루기 기본이다.

 

내용: 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 a234이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다.

 

참 어렵게 돌아가서 5h 정도 삽질했다. 어디서 삽질했는지는 주석에 달려있으므로 처음 본 함수를 적어두자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package 문자열다루기기본;
 
import java.util.Scanner;
 
public class Solution {
 
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);//입력 값을 받기위해 Scanner 클래스를 부르고  sc로 선언.
        boolean output = true;  // 트루를 갖는 변수 output을 선언.
        String write;  //문자열 클래스  write를 선언.
        char b = 0// check 변수의 값을 받기위한 변수 char를 선언.
                
        System.out.println("본 프로그램은 문자열의 수가 4이거나 6인지 "
                + "그리고 숫자로만 구성되어있는지 확인합니다."
                +  '\n' +"1~8자까지 입력해주세요. ");// 사용자의 편의를 위해 안내 제시.
        
        write = sc.nextLine();//문자열 클래스 write를 sc의 입력 문자열로 선언.
        
        String a = write; //a 라는 문자열 변수를 선언한뒤 write로 대입.
        int length =a.length();
        /*a를 길이를 쉽게 측정하기위해 int 변수 length 선언
                및 a의 입력값 즉 write의 입력 값의 문자열의 수를 측정하기 위해 
                length 함수 사용*/
                                            
        System.out.println('\n' + "입력하신 문자열의 수 =" + "\t" + length + '\n');
        /*사용자가 자신의 입력한 문자열의 수를 알고 파악할 수 있게끔 입력값의 
        문자열을 출력*/
        
        if((a.length() == 4|| (a.length() ==6) ) {//a의 길이를 4이거나 6일경우 를 설정
                    
        forint check = 0; check < a.length(); check++ ) {
            /*반복문을 만들고 인트형 변수 check의 초기값을 0으로 지정
             * 변수 check가 a의 문자열의 길이가 check 값보다 클때까지 반복문이 진행되게끔함.
             */
             
            b = write.charAt(check);            
            /*char 형 변수 b에 입력값 write 의 check 문자를 대입.
             * write의 문자에 check 과정에서의 추출문자를 저장시킴(charAt)*/
            
            if( (Character.isDigit(b) == false) ) { //변수 b에 대입되는 문자열이 숫자인지 문자인지에 따라 true false를 나타내는 변수 캐릭터와 isDigit 설정.
                output = false;// b의 검사값이 false 일 경우 output이 false가 되게끔 설정.                
            }
        }            
        }else { output =false//for 문의 4 혹은 6 로직에 맞지 않으면 사전에 output을 false 되게끔 설정.            
                }
            System.out.println(output);  //모든 로직이 종료되면 output을 출력.
    }
}
cs

 

 

 

1. 입력 값을 받는 클래스를 몰라 Scanner라는 클래스를 알아냈다. 

/* 선언하면 import java.util.Scanner; 로 호출 되면 자바의 유틸에서 스캐너를 호출한 것으로 보인다.

 Scanner 타입에 sc라는 변수를 지정했으며 대입 값으로 newScanner(System.in); 으로 초기화 및 입력 값을 받은 것으로 보인다.*/

2. String 타입 변수 write 에 sc.nextLine();을 대입

// 이게 뭐냐...입력값 sc에 .nextLine()은 엔터를 치기 전까지의 입력 값을 받는다 .next()는 스페이스바를 치기 전까지의 입력 값 을 구분한다.

3. int 변수 length 에  a.length();를 대입

//길이는 정수 값이므로 int타입이며 a.length() 에서 .length() 는 입력받은 문자열의 길이를 구해준다.

4. || = or  , && = and

5.Character.isDigit(b) == false

/* 괄호 안의 값이 문자인지 숫자인지 판단하는 boolean 타입 매써드 is.Digit() 즉 true 나 false로 결과 값이 나온다.

char의 값을 객채로 삼는 클래스인 Character

그러므로 Charater.isDigit()*/

 

다분히 일차원 적이고 비효율적인 방법으로 접근한 것 같다. 또 해보며 겪어봐야겠다.