인프런 커뮤니티 질문&답변
작성자 없음
작성자 정보가 삭제된 글입니다.
array 문제풀이 2번 질문입니다.
작성
·
24
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요

질문을 보면 사용자에게 정수를 받는 다는 전제일 때, 입력값이 12345 이면 1,2,3,4,5으로 나오지만
34567 로 정수값을 입력하면 출력값이 3,4,567 로 나오는데 도저히 해답이 생각 안나서요ㅠ 어떻게 코드를 수정해야 다른 정수들을 넣어도 4,5,6,7,8 <<이런식으로 나올 수 있을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 이혜원님.
질문하신 내용은 Java의 배열과 반복문을 활용하여 입력받은 정수를 출력할 때 발생하는 문제로 보입니다. 입력된 값이 34567일 경우, 3, 4, 567이 아니라 3, 4, 5, 6, 7로 출력되도록 하는 방법을 살펴보겠습니다.
문제의 원인은 사용자가 입력하는 값(34567)을 정수형으로 처리하면서 한 자리씩 처리하지 않는 데 있습니다. Scanner에서 nextInt()를 사용하여 입력을 받으면, 공백을 기준으로 정수를 읽기 때문에 숫자 34567을 하나의 정수로 인식하게 됩니다.
이 문제를 해결하기 위해서는 문자열로 입력을 받아 각 문자를 숫자로 변환하여 배열에 추가해야 합니다. 이를 위해서 next()를 이용해 문자열로 먼저 입력받고, 이를 한 글자씩 쪼개 숫자로 변환해 배열에 넣는 방식을 사용할 수 있습니다.
아래와 같이 수정할 수 있습니다:
import java.util.Scanner;
public class ArrayEx {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("5개의 정수를 입력하세요:");
String input = scanner.next(); // 문자열로 입력받기
int[] numbers = new int[input.length()];
for (int i = 0; i < input.length(); i++) {
numbers[i] = Character.getNumericValue(input.charAt(i));
}
System.out.println("출력:");
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i]);
if (i < numbers.length - 1) {
System.out.print(",");
}
}
}
}
이 코드는 입력을 문자열로 받기 때문에 사용자가 34567을 입력하더라도 각 숫자가 개별적으로 배열에 저장되며, 올바르게 출력됩니다.
위 코드와 함께, 관련된 개념을 설명하는 기존 답변이 도움이 될 수 있습니다. 비슷한 문제를 다룬 게시물 “문제와풀이1 문제2번 질문”에서는 출력 포맷과 관련된 다른 문제 해결 방법에 대해 논의하고 있습니다. 이를 참고하여 추가적인 이해를 얻을 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





