2016-09-30 2 views
-2

sc.nextInt(); sc에 오류를 준다. 그냥 함수를 할당하고 호출하여 x와 y의 합을 계산하려고합니다. 그것은 끝내야 할 임무지만, 불행히도 저는 조교에게 물었습니다. 그러나 그것을 해결하는 방법을 알지 못했습니다.정수 입력 스캐너의 오류

import java.util.Scanner; 
public class calculator { 

int x; 
int y; 

public void setnumber(){ 
    System.out.println("Please Enter X"); 
    x = sc.nextInt(); 
    System.out.println("Please Enter Y"); 
    y = sc.nextInt(); 
} 

public void sum(){ 
    int sum = x + y; 
    System.out.println ("The Sum" + sum); 
} 

public static void main(String[] args) { 

    Scanner sc = new Scanner (System.in); 
    calculator sx = new calculator(); 
    sx.setnumber(); 
    sx.sum(); 
} 
} 
+1

어떤 오류가 발생합니까? – Pshemo

+0

스캐너 개체의 참조를 설정 한 숫자 방법으로 전달해야합니다 .'public void setnumber (Scanner sc) ' –

+7

"TA를 요청했지만 해결 방법을 알지 못했습니다. –

답변

2

이동합니다 setnumber 방법 스캐너 선언 : 주요 방법 중

import java.util.Scanner; 
public class calculator { 

int x; 
int y; 

public void setnumber(){ 
    Scanner sc = new Scanner (System.in); 
    System.out.println("Please Enter X"); 
    x = sc.nextInt(); 
    System.out.println("Please Enter Y"); 
    y = sc.nextInt(); 
} 

public void sum(){ 
    int sum = x + y; 
    System.out.println ("The Sum" + sum); 
} 

public static void main(String[] args) { 

    calculator sx = new calculator(); 
    sx.setnumber(); 
    sx.sum(); 
} 
} 
+0

감사합니다. 왜이 문제가 해결되는지 설명해 주시겠습니까? –

+0

Scanner 객체의 가시성이 선언 된 메소드로 제한되기 때문에 해결됩니다. 코드에서 Scanner 객체는 main 메소드에서 '숨김'상태입니다. 당신이 그것을 참조하는 방법으로 옮겼습니다. – nicomp

+0

메서드에서 System.in을 처리하는 스캐너를 열면 몇 가지 문제가 발생할 수 있습니다. 우리는 자원을 종결해야하므로 Scanner를 닫아야한다는 것을 의미 할 것입니다. Scanner는 System.in을 닫는 것을 의미합니다. 이 메서드를 한 번만 사용하고 System.in에서 다시 읽지는 않더라도 괜찮습니다. 그렇지 않은 경우 일반적으로 System.in 용 단일 Scanner를 만들어 인수로 메서드에 전달하는 것이 좋습니다. 그런 다음 종료 직전에 main 메소드 끝에서이 스캐너를 닫을 수 있습니다. – Pshemo

0

테이크 스캐너 사우스 캐롤라이나, 클래스 수준에서 정의합니다.

+1

범위를 제한해야합니다. 객체가 한 메소드에서만 사용되는 경우 해당 메소드에서 선언되어야합니다. – nicomp

0

범위에 대해 알아야합니다. 스캐너 개체가 기본 메서드 외부에 표시되지 않습니다.