자기주도학습/코딩 테스트

코딩 테스트 JAVA 변수, 타입, 문자열 기초

min민 2022. 12. 22.

틀린문제 오답노트.

 

문제 1    [문자열을 인자로 받는다의 의미]

문자열을 인자로 받아서 느낌표를 붙여서 리턴해주는 메서드 returnWordWithJoy가 있습니다. 메서드 returnWordWithJoy의 첫 번째 인자로 문자열 "I love coding"을 넣어서 호출하고, 그 결과값을 변수 word에 할당하세요.

 

코드:

public class Solution { 
 
  public String invoke() {
    String word;
    //여기에 코드 적기!

 
    return word;
  }

 
  public static String returnWordWithJoy(String str) {
    if(str.equals("")) return "empty value";
    else return str + "!";
  }
}
 
 

정답: 

초록색 위치에 

 word = returnWordWithJoy("I love coding");

 
 
 
 
틀린이유: 
문자열을 인자로 받아서의 의미를 몰랐다.
-> 문자열을 인자로 받아서란 ("I love coding") <ㅡ 이 자체로 () 안에 문자열이 들어가 있는 상태로 만들라는 말이다.
문자열을 인자로 받아서 느낌표를 붙이는 메서드 returnWordWithJoy에 삽입하려면
 
 
 returnWordWithJoy("I love coding") 을 작성해야하고 그 값을 word 에 할당하면
 
정답인

 word = returnWordWithJoy("I love coding"); 가 된다.

 

 

 

 

 

 

문제 2    [Java - Char를 Int로 변환하기]

문자(Character) 하나를 입력받아 알맞은 값(int)을 리턴합니다.

 

 

코드:

public class Solution { 
  public int convertToNumber(char character) {
    int result;
    // 초록색 여기 작성!
    result =  Character.getNumericValue(character);

    
    return result;
  }
}

 

 

정답:

    result =  Character.getNumericValue(character); 

or

 

    result = character - '0';

 
 

 

 

틀린이유:

Java에서 Char을 Int로 바꾸는 방법을 몰랐다.

Character.getNumericValue()을 활용해서 변경할 수 있다.

 

 result = character - '0';

이것은 Ascii code(아스키 코드)를 사용해서 푼것인데

1. 컴퓨터는 문자를 기억할 수 없기 때문에 숫자 번호에 문자를 연결하여 기억하게 된다.

가령 숫자 0은 문자A, 숫자 1은 문자 b이다.

2. Ascii code는 초기에 만들어진 숫자 - 문자 매필 테이블이라고 생각하면 된다.

3. 문자 '0'의 아스키코드는 48 ~ 문자 '9'의 아스키코드는 57이다

즉 '0','1','2','3','4','5','6','7','8','9' 는      48,49,50,51,52,53,54,55,56,57로 보면 된다.

따라서 아스키 코드를 이용해 연산하면 char을 int로 변환한것과 동일한 값이 나온다.

 

따라서 문제대로면 문자하나를 입력받아 int로 리턴하면숫자 0 하나만 리턴해도 된다.물론 1로 해도된다.따라서 character - '0'; 이 된다. 

character - '0';

'0' 은 48 이기 때문에 char값에서 아스키코드 0을 빼면 숫자가 나오게된다.

코드번호 모를때는 result = character - '0' 할당만하면 된다.

 

 

 

문제 3    [int -> char 형변환]

숫자(int) 하나를 입력받아 알맞은 문자(char)를 리턴합니다.

 

코드:

public class Solution { 
  public char convertToChar(int num) {
    char result;
    // 초록색 여기에 작성!
    result = (char)num;
 
    return result;
  }
}

 

 

정답:

    result = Character.forDigit(num, 10);

 
 
or

   result = (char) (num + '0');

 

 

틀린이유:

int -> char 변환을 할줄 몰랐음.

int형을 char형으로 형변환하기: Charater.for.Digit(int digit, ind radix)

 

java lang 패키지의 Charater 클래스의 메소드로 forDigit()이 있다.

1. int num = 5;
2. char c = Character.forDigit(num, 10);
 int 숫자 5를
 

char c = Charater.for.Digit(num,10); 으로 하면

int형 변수 num이 char형으로 변수 c에 저장된다.

 

 

result = (char)(num+'0');

아스키 코드를 활용한 것으로 num에 아스키코드를 합쳐서 char로 표현함.

즉 num 숫자에서 + '0' 아스키코드 48을 더하게되면 char에 해당하는값이 나오게됨.

 

따라서

코드번호 모를때는 result = character + '0'

 

(char)(num+'0') 을 씌운 이유는 result는 char 타입이고 num은 int형 타입이기에

char로 수동타입변환을 해줘야한다. (char)

 

 

 

 

 

 

태그:

문자열을 인자로 받는다의 의미

Java - Char를 Int로 변환하기

int -> char 형변환

댓글