str.concat("hi")를 예시로 들면, 이 함수는 str의 값을 복사해 다른 메모리에 "따로" 저장한 다음, 거기다가 "hi"를 붙이게 됩니다. 즉, 기존의 str에는 아무런 변화도 생기지 않습니다. 때문에 위 코드에서 str.concat을 아무리 호출해봤자 str는 계속 빈 문자열로 남아있게 됩니다.
str = str.concat(String.valueOf(num1%10))을 하면 해결될 겁니다. 다만 이는 함수를 호출할 때마다 str의 값을 딴데다 복사하고 문자열을 붙이고, str의 값을 딴데에 복사하고 문자열을 붙이고, 이를 계속해서 반복하기 때문에 비효율적입니다.
질문자님께서 원하시는 str 자체의 뒤에 문자열을 계속 붙이는 건 StringBuilder를 사용해 더 효율적으로 구현할 수 있습니다. 자세한 내용은 구글링해보세요.
참고한 글: https://devdy.tistory.com/9 (구글링해서 제일 위에 나온 블로그)
qew9546 2년 전
실행을 하면 이같은 에러메세지가 뜨는데 왜 str이 빈문자열인지 모르겠습니다.ㅠㅠ도와주세요..
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at chap7_String.Sangsue.main(Sangsue.java:21)