묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
Scanne r를 닫지 않는 이유
강의를 보다가 궁금한 점이 생겨서 질문드립니다.김영한 선생님 강의에서 다른 자바 강의들에서도 스캐너를 사용하시고 close() 메서드로 닫지 않으시는데요.챗지피티도 그렇고 검색해보니 스캐너를 닫아주는게 좋다고 하는데, 왜 닫아야 하는 건가요?그리고 닫는게 맞는거면 왜 강의에서 닫지 않으시는지 궁금합니다.김영한 선생님 뿐 아니라 다른 많은 강의에서도 스캐너를 잘 닫지 않더라고요.자바가 아닌 시스템 자체에서 input 자원을 가져오는 거기 때문에 닫아줘야 한다고 하던데, 이 점이 궁금합니다!
-
미해결
JAVA Scanner
package bufferTest; import java.util.Scanner; public class BufferTest {public static void main(String[] args) {Scanner scan = new Scanner(System.in); String a = scan.next(); String[] arr1 = {"a"}; System.out.println(System.identityHashCode(a));System.out.println(System.identityHashCode(arr1[0])); }} 왜 arr[0]과 a의 주소 값이 다른가요..???답변 주시면 정말 감사하겠습니다!
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
[7. Scanner][문제와풀이4] ScannerWhileEx3 질문
안녕하세요 선생님, 선생님께서 남겨주신 코드와 다르게 제 코드처럼 작성해도 무방할지 질문드립니다. [선생님 코드] 선생님께서 작성하신 코드는 input 지역변수의 스코프 값이 넓습니다.public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int sum = 0; int count = 0; int input = 0; System.out.println("숫자를 입력하세요, 입력을 중단하려면 -1을 입력하세요 : "); while (true) { input = scanner.nextInt(); if (input == -1) { break; } sum += input; count++; } double average = (double) sum / count; System.out.println("입력한 숫자들의 합계 : " + sum); System.out.println("입력한 숫자들의 평균 : " + average); }[제가 작성한 코드] 저는 input의 스코프값이 넓다고 생각해서 자체적으로 while문에서만 해당 변수를 부여하고, 사용했는데 하기와 같이 사용해도 무방할까요?public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int sum = 0; int count = 0; System.out.println("숫자를 입력하세요, 입력을 중단하려면 -1을 입력하세요 : "); while (true) { int input = scanner.nextInt(); if (input == -1) { break; } sum += input; count++; } double average = (double) sum / count; System.out.println("입력한 숫자들의 합계 : " + sum); System.out.println("입력한 숫자들의 평균 : " + average);
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
[Scanner] 7-3.반복예제(ScannerWhile3) 질문
안녕하세요 선생님 선생님께서 작성하신 코드와 다르게 하기 코드처럼 작성해도 무방할까요?코드 결과값은 동일하게 나타내는 것으로 확인되었습니다. 다만 차이가 있거나 더 좋은 코드를 작성한다면 어떤 코드가 좋을지 몰라 질문드립니다![선생님 작성 코드] - while문 출력 후 -> 입력 정수의 합 출력public static void main(String[] args) { Scanner input = new Scanner(System.in); int sum = 0; while (true) { System.out.print("정수를 입력하세요 (0을 입력하면 종료) : "); int num = input.nextInt(); if (num == 0) { break; } sum += num; } System.out.println("입력한 모든 정수의 합 : " + sum);[제가 작성한 코드] while문 내 if 구문에서 -> 입력 정수의 합 출력public static void main(String[] args) { Scanner input = new Scanner(System.in); int sum = 0; while (true) { System.out.print("정수를 입력하세요 (0을 입력하면 종료) : "); int num = input.nextInt(); if (num == 0) { System.out.println("입력한 모든 정수의 합 : " + sum); break; } sum += num; }
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
Scanner 큐
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("첫 번째 숫자와 두 번째 숫자 모두 0을 입력하면 프로그램을 종료합니다."); while (true) { System.out.print("첫 번째 숫자를 입력하세요:"); int num1 = scanner.nextInt(); System.out.print("두 번째 숫자를 입력하세요:"); int num2 = scanner.nextInt(); if (num1 == 0 && num2 == 0) { System.out.println("프로그램 종료"); break; } int sum = num1 + num2; System.out.println("두 숫자의 합: " + sum); } }위 코드를 실행시켰을때첫 번째 숫자를 입력하세요 : 10\n이렇게 입력하고 두번째 줄에 두 번째 숫자를 입력하세요 : 20\n이렇게 제가 입력했다고 가정했을때 큐에서 문자열이 어떻게 들어가고 나오는지 궁금합니다.10하고 enter를 치면 num1은 정수 부분을 읽어들여서 10만 저장하고 큐에는 현재 '\n'가 남아있는 상황이고 그 이후에 20enter를 치게 된다면 20\n을 큐에 집어넣은 상황이므로 큐에는 현재 \n20\n이렇게 들어가있을텐데 여기서 num2는 바로 20을 꺼낼 수 있는 건가요?? 앞에 있는 \n 값은 무시하고 정수만 바로 뽑아내는건가요?
-
미해결김영한의 실전 자바 - 기본편
Scanner 문제
scanner.nextInt() 다음에 바로 scanner.nextLine()을 하는 이유는 무엇인가요? 그리고 위 코드처럼 하지 않을 시에 왜 이러한 결과가 발생하는지 궁금합니다.
-
미해결
if 절 작성 시, input tool 완성시켜야 하나요?
if절 작성 시, Scanner 이런 툴을 작성하고 if 절 적어도 상관없나요?아니면 문제 바이 문제 인가요?import java.util.*; psvm Scanner input = new Scanner(System.in); , , , if . . .. .