2016-10-05 6 views
0

myScanner를 닫으려고하면 myScanner 아래에 빨간색 선이 표시되어 도달 할 수없는 코드임을 알립니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?java에서 스캐너를 닫을 때 연결할 수없는 코드가 있습니까?

public class crypt {  

static final char FIRST = ' '; 
static final char LAST = ']'; 

static final int RANGE = LAST-FIRST+1; 

public static void main(String[] args) { 
    safe(""); 

} 

public static boolean safe(String word) { 
    Scanner myScanner = new Scanner(System.in); 
    word = myScanner.nextLine(); 
    String upper = word.toUpperCase(); 
     for (int i=0; i<upper.length(); i++) { 
      char c = upper.charAt(i); 
       if (c < FIRST && c > LAST) { 
        return true; 
       } 
     } 
    return false; 
    myScanner.close(); 
} 
+0

'''myScanner.close();'''위의 줄을 보셨습니까? – kkaosninja

+1

그 라인은 정말로 도달 할 수 없습니다. 왜냐하면 당신은 결코 그 라인에 도달하지 않을 것이기 때문입니다 - 당신이 함수에서 먼저'리턴 '합니다. –

+0

더 이상'Scanner.close()'를 사용할 필요가 없습니다. 맞습니까? – RobotKarel314

답변

0

myScanner.close();을 'return false;'앞에 줄으로 이동하려고 할 것입니다. 주의해야 할 또 다른 사항은 true를 반환 할 때 스캐너를 닫지 않는 것입니다. return true; 앞에 myScanner.close();을 추가 할 수 있습니다.

public static boolean safeToUse(String plaintext) { 
    Scanner myScanner = new Scanner(System.in); 
    plaintext = myScanner.nextLine(); 
    String upper = plaintext.toUpperCase(); 
     for (int i=0; i<upper.length(); i++) { 
      char c = upper.charAt(i); 
       if (c < FIRST && c > LAST) { 
        myScanner.close(); //Close the scanner before you return true 
        return true; 
       } 
     } 
    myScanner.close(); //close the scanner before you return. 
    return false; 
} 

함수 안에있을 때 코드는 return 이후에 실행되지 않습니다. return을 코드의 정지 지점으로 표시하십시오. 이 지점에 도달하면 해당 메서드/함수 (귀하의 경우에는 safeToUse())가 호출 된 곳으로 이동합니다.

코드를 실행하여 프로그램을 단계별로 실행할 수있는 좋은 방법을 추적하고 더 잘 이해할 수 있습니다. 먼저 컴파일하기 위해 제안 된 변경 사항을 수행해야합니다.

0

이 줄 :

return false; 

정지 결과 "거짓"를 반환하는 기능, 그래서이 문장 이후의 코드가 실행되지 않습니다. 또한

, 당신은 그것을 사용 후 스캐너를 닫습니다, 그래서 전에 먼저

myScanner.close(); 

문을 이동해야합니다 "false를 반환;", 또한 이전에 추가 "true를 반환;" 성명서.

0

return 문이 호출되면 다음 행이 실행되지 않고 이로 인해 컴파일 오류가 발생합니다.