2014-09-16 2 views
1

Java 클래스의 경우 작동하는 for 문에 세미콜론을 추가하고 출력이 그 이유를 설명해야합니다. 왜 세미콜론을 추가하면 오류가있는 트리 유형 오류가 발생하여 코드를 컴파일 할 수 없게되는지 이해할 수 없습니다. 코드 아래에 출력이 있습니다. 또한 다른 태그를 표시하지 않기 때문에 아무 태그에도 백 슬래시를 추가했습니다. 따라서 for 문 뒤에 세미콜론을 사용하면 왜 그런 오류가 발생합니까? 미리 감사드립니다.for 문 다음의 세미콜론이 컴파일 오류를 일으키는 이유는 무엇입니까?

package fordemo; 

import java.util.Scanner; 

public class ForDemo { 
    public static void main(String[] args) { 
     { 
      Scanner user_input = new Scanner(System.in); 
      System.out.println("Input a number:"); 
      int number = user_input.nextInt(); 
      for (int n = 1; n <= number; n += 2) ; 
      System.out.print(n + " "); 
     } 
    } 
} 

런타임 :

Input a number: 

9 

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - 
Erroneous tree type: <\any>\ 

at fordemo.ForDemo.main(ForDemo.java:35) 

Java Result: 1 

BUILD SUCCESSFUL (total time: 1 second) 
+2

@ Mike'Pomax'Kamermans 실제로, 그것은 perfe ctly 합법적인데, 특별히 실용적이지는 않습니다.이 경우 적어도 – MadProgrammer

+0

@MadProgrammer의 공정한 점수는 –

+0

이고, 그런 식으로 원한다면 ** (for;); **는 – Olu

답변

2

당신은 ;으로 for-loop을 teminating하고 ... for (int n = 1; n <= number; n += 2); < --- 여기 ;를 참조하십시오,이 n가되고 다음 루프가 아무것도하지 않는 것을 의미 정의되지 않았습니까? for-loop 컨텍스트 내에서만 정의되어 있습니까?

for (int n = 1; n <= number; n+=2) { 
    System.out.print(n + " "); 
} 
0

코드를 읽을 수 있도록 (공백 만 변경) 재구성했습니다.

package fordemo; 

import java.util.Scanner; 

public class ForDemo { 

    public static void main(String[] args) { 

     /* Question 2 */ 
     { 
      Scanner user_input = new Scanner(System.in); 
      System.out.println("Input a number:"); 
      int number = user_input.nextInt(); 
      for (int n = 1; n <= number; n+=2); 
      System.out.print(n + " "); 
     } 
    } 
} 

문제는 지금 분명해야합니다.

n은 범위에 포함되지 않습니다.

0

귀하의 루프

for (int n = 1; n <= number; n+=2); // execute and exit and nothing do 

는 그런 다음 System.out.print(n + " "); 전화 몸을하지 않아도, n 여기에 표시되지 않습니다. 당신이 ;for loop을 종료 할 때

for (int n = 1; n <= number; n+=2) { 
    System.out.print(n + " "); 
} 
0

를 다음과 같이 당신이

당신이 사용할 수있는 변수의 범위를 외부에서 호출이기 때문에, 그것은 for loop해야,

사실
for (int n = 1; n <= number; n+=2) { 
    //do nothing 
} 
//here n is out of variable scope 
System.out.print(n + " ");} 

에 equavilent be

for (int n = 1; n <= number; n+=2) { 
    System.out.print(n + " "); 
} 
관련 문제