생활
scanner 오류가 납니다 .
import java.util.*;
public class ExArray {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int intArray[];
intArray = new int[5];
int max =0;
System.out.println("양수 5개를 입력하세요.");
for(int i=0; i<5; i++) {
intArray[i] = scanner.nextInt(); //오류
if(intArray[i] > max)
max = intArray[i];
}
System.out.println("양수 5개를 입력하세요.");
scanner.close(); //오류
}
}
이클립스를 사용중인데 제가 오류라고 적은부분이 계속 난리네요 컴파일을 해도 scanner 오류라고 뜨는데 코딩에 문제있는지.. 아님 머가 문제인지 알려주실수있나요?
13개의 답변이 있어요!
안녕하세요
답변자로 활동중인 굴뚝새 입니다
소스를 보아하니 오류라고 적어주신 부분이 문제가 있는거 같은데요.
위에서 sc = new Scannner(System.in) 선언을 하셨잖아요
시스템에서 입력한 값이 sc에 담김니다
그럼 intArray[i] = sc를 넣어야겠습니다.
닫을때도 sc.close();
해줘야 하는게 맞는것으로 보여집니다
다음엔 오류내용도 간략히 올려주시면 파악하기가 더 쉽습니다
안녕하세요.
Scanner 클래스 변수 선언은 아래와 같이 하셨습니다.
Scanner sc = new Scanner(System.in);
scanner.nextInt(); //오류
=> sc.nextInt();
scanner.close(); //오류
=> sc.close();
바로 뭐가 문제인지 아시겠죠?
선언한 변수명으로 사용하셔야 하는데.. 잘못 사용하셨네요.
코딩할 때 에러가 나면 쉽게 풀릴수 있는게 대부분이니 어렵게 생각하지 마세요.
특히 에러메세지를 읽어보면 원인을 알 수 있으니.. 에러메세지 해석을 먼저하시길 바랍니다.
안녕하세요. 현업 6년차 개발자입니다. 현 구문의 오류의 경우 스캐너로 선언한 객체를 닫지 않고 엉뚱한 변수를 닫으셔서 그렇습니다.
Scanner sc = new Scanner(System.in);<- 스캐너 클래스로 sc 객체를 받았으니
intArray[i] = sc.nextInt(); //오류
sc.close(); 가 맞습니다.
클래스 / 객체 공부를 조금 더 해보시길 추천드립니다. 해당 지식은 자바에서 필수입니다.
Scanner sc = new Scanner(System.in);
-> 변수명이 sc로 선언했네요. 아래 두 라인의 변수명을 sc로 변경하고 해보세요
intArray[i] = scanner.nextInt(); //오류
scanner.close(); //오류
아래는 수정한 코드입니다.
import java.util.*;
public class ExArray {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int intArray[];
intArray = new int[5];
int max =0;
System.out.println("양수 5개를 입력하세요.");
for(int i=0; i<5; i++) {
intArray[i] = sc.nextInt(); //오류
if(intArray[i] > max)
max = intArray[i];
}
System.out.println("양수 5개를 입력하세요.");
sc.close(); //오류
}
}
Scanner sc = new Scanner(System.in);
스케너 객체를 sc라는 이름으로 생성하시고 실제로 사용하시는 부분에서는
scanner.nextInt(); //오류
scanner.close(); //오류
scanner 사용하셔서 나는 오류로 추정됩니다.
이렇게 한번 바꿔보시겠어요?
sc.nextInt();
sc.close();
스캐너 이름을
Scanner sc = new Scanner(System.in);
sc로 사용하겠다고 선언하셨는데
밑에서 사용하실때
sc.NextInt();
sc.close();
로 사용하신게 아닌scanner.NextInt();
scanner.close();
로 사용하셨네요.
안녕하세요.
자바 소스 문제로 질문을 주셨네요.
조금만 생각해보면 보이실텐데 ^^; 코딩이라는게 내가 보면 절대 못찾는 오류나 버그들이 생기기 마련이죠, 다른 사람이 보면 한번에 파악할 수 있는데 말이죠 ㅎㅎ
오류라고 표시한 부분을 보니 scanner.nectInt(); 와 scanner.close(); 인데
위쪽에 scanner를 선언한 부분이 없는 것을 알 수 있습니다.
Scanner sc = new Scanner(System.in); 으로 sc 를 선언하셨네요
scanner 를 sc로 변경하시거나 그 반대로 수정하시면 될 것 같습니다
Scanner sc = new Scanner(System.in);
구문은 scanner 이라는 클래스의 객체를 불러와서 sc 라는 이름으로 사용하겠다는 말입니다.
Scanner 를 sc라는 변수 이름으로 선언하셨으니, 해당 클래스 내에서 사용하실 때는 sc.메소드 방식으로 사용하셔야 합니다.
Scanner.nextInt(); -> sc.nextInt();
Scanner.close(); -> sc.close();
안녕하세요
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int intArray[];
intArray = new int[5];
int max =0;
System.out.println("양수 5개를 입력하세요.");
for(int i=0; i<5; i++) {
intArray[i] = scanner.nextInt(); //오류
if(intArray[i] > max)
max = intArray[i];
}
System.out.println("양수 5개를 입력하세요.");
scanner.close(); //오류
}
처음 Scanner 정의 부분을 sc 로 정의 하셨는데
아래에서는 scanner 로 호출하셔서 오류가 뜨는겁니다.
수고하세요~
안녕하세요 질문하신 내용의 소스코드 확인해보니
main 시작하는 상단에 선언하신 변수를 사용하지 않아 나는 오류로 보입니다
아래 부분에서
intArray[i] = sc.nextInt(); //오류
이렇게 선언하신 변수를 사용하셔야합니다
질문하신 내용에 도움됐으면 좋겠습니다
감사합니다
Scanner 변수를 선언과 동시에 객체를 할당해 주셨네요. sc 라는 이름으로요.
Scanner sc = new Scanner(System.in);
아래에 사용하실때 "scanner." 이 아니라 "sc." 으로...올바른 변수명을 사용하시면 됩니다. ^^
scanner.nextInt();
scanner.close(); //오류
Scanner sc 라고 sc라는 변수를 생성해주신걸로보이고,
scanner라고 작성하신 변수는 따로 선언된곳이없네요.
scanner 대신에 선언되어있는 변수인 sc로 변경을해야될것같아보입니다.
아니면 선언부의 sc를 scanner로 변경해보세요
Scanner scanner = new Scanner(System.in);
안녕하세요.
질문하신 내용 답변드립니다.
위 소스의 4번 라인에
Scanner sc = new Scanner(System.in); 라고 선언을 했기때문에
오류나는 scanner 부분을 sc 로 변경하면 오류가 나지 않습니다.
반대로 4번 라인을 Scanner scanner = new Scanner(System.in);
라고 수정해도 결과는 똑같습니다.