C언어에서는 문자를 입력받을 때 scanf를 사용한다. scanf와 함께 %s라는 포맷 코드를 사용하면 문자열을 입력받을 수 있는데, 여기에는 한 문제가 있다. char txt[100]; int main() { scanf("%s", txt); printf("%s", txt); } /* [input] Hello, World! [output] Hello, */ 바로 공백을 만나면 문자열의 끝으로 인식하고 문자열을 읽기를 그만둔다는 점이다. 이럴 때는 gets 함수를 사용하면 쉽게 해결할 수 있다. char txt[100]; int main() { gets(txt); printf("%s", txt); } /* [input] Hello, World! [output] Hello, World! */
for문을 돌다가 중간에 break로 반복문을 빠져나오는 기능을 사용하는 일은 종종 있다. 그런데 다른 언어에서는 이게 반복문이 다 끝나서 빠져나온건지, 중간에 break를 통해 빠져나온 건지 확인하는 일이 은근 귀찮은데 반해 Python에서는 for-else 구문으로 쉽게 확인할 수 있다. for-else 구문이란? 반복문이 중간에 break 당하는 일 없이 끝까지 도는 데에 성공했을 경우 else 구문 안에 있는 내용을 실행한다. def printNums(num): for i in range(num): print(i, end=' ') if i > 4: break else: print("[Not breaked!]") # output: 0 1 2 3 4 5 printNums(10) # output: 0 ..
java reflect를 사용하면 클래스에서 멤버변수의 이름들을 얻어오거나, 메소드를 실행하는 등의 다양한 작업을 할 수 있다. 멤버변수들의 정보가 담긴 Field 객체들의 배열을 얻어오는 getDeclaredFields() 메소드와 메소드를 동적으로 실행할 수 있게 해주는 invoke() 메소드를 이용해서 특정 클래스 객체 내의 모든 멤버변수 이름과 값을 가져올 수 있다. 알고리즘 요약 1. getDeclaredFields() 를 통해 멤버변수들의 Field 배열을 얻음 2. getName() 을 통해 각 멤버변수 Field 객체에서 변수명을 얻음 3. ②에서 얻은 변수명을 통해 getter 함수 명을 만든 후 invoke()를 이용하여 getter 함수 실행 후 결과값 얻음 // ※ import ja..
// Boolean to boolean Boolean b = true; boolean bb = b.booleanValue(); // Integer to int Integer i = 10; int ii = i.intValue(); // Character to char Character c = 'a'; char cc = c.charValue(); // Long to long Long l = 2L; long ll = l.longValue(); // Double to double Double d = 5.0; double dd = d.doubleValue(); 이를 이용해서 Integer to double과 같은 경우는 Integer를 언박싱한 후 double로 형변환하면 된다. Integer i = 10; do..
java.lang.ArithmeticException: / by zero 이 에러는 정수를 0으로 나눴을 때 발생하는 오류이다. 하지만 흥미로운 점이 있다. int a = 10; System.out.println(a / 0); 이를 실행할 경우 JVM은 위의 "/ by zero" 예외를 반환하지만 double a = 10; System.out.println(a / 0); int a = 10; System.out.println(a / 0.0); 이 두 경우는 JVM이 Infinity를 반환하게 된다. 따라서 try-catch 문으로 캐치할 수 없다! 이렇게 int 형에서는 예외를 발생하던 코드가 double형 (float 형에서도 동일함)에서는 Inifinity를 반환하는 이유는 Java가 부동 소..
f = open(path, 'r') while(True): txt = f.readline() if not txt: break print(txt)