아하
  • 토픽

  • 스파링

  • 잉크

  • 미션


단정한강아지120

단정한강아지120

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개의 답변이 있어요!

    • 대담한굴뚝새41

      대담한굴뚝새41

      안녕하세요

      답변자로 활동중인 굴뚝새 입니다

      소스를 보아하니 오류라고 적어주신 부분이 문제가 있는거 같은데요.

      위에서 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);

      라고 수정해도 결과는 똑같습니다.