2014-12-26 1 views
2

나는 기본적인 자바 튜토리얼을하고 있는데, 아래는 질문이다.가정 된 변수를 변수로 해결할 수 없습니까?

1에서 100까지의 숫자를 인쇄하는 방법을 씁니다. 그러나 3의 배수로 숫자 대신 "Fizz"를 인쇄하고 5의 배수는 "버즈 (Buzz)"로 인쇄하십시오. 내가 "변수로 해결할 수없는 둘, 셋, 다섯 인쇄 ÒFizzBuzzÓ의 배수 인 숫자를 들어."

public static void fizzBuzz(){ 

     for(int i = 0; i < 101; i= i +1) 
      System.out.println(i); 
     if (i%3 == 0){ 
      System.out.println("ÒFizzÓ"); 
     }else if (i % 5 == 0){ 
      System.out.println("ÒBuzzÓ"); 
     }else if (i % 15 == 0){ 
      System.out.println("ÒFizzBuzzÓ"); 
     } 
    } 

이클립스 하더군요 아래

내 코드입니다. "이것은 내가 나를에 혼란 "for"를 정수로 정의했다고 생각하십니까?이 초보자 질문을 해결하는 데 시간을내어 주셔서 감사합니다 :)

+4

만약'if-else-if'가'for' 루프 내에 있어야합니까? –

+0

@SotiriosDelimanolis 그가 조건에서'i'를 사용하고 있음을보고, 나는 예스라고 대답 할 것입니다. – Dici

+2

@Dici는 Sotirios가 아마도 그가 충분히 잘 알고 있음을보고, 나는 그것이 수사학적인 질문이라고 말할 것입니다 : P – Amadan

답변

3

첫 번째 문장 다음에 중괄호 또는 루프 본문이 추가됩니다. 3과 5의 배수이기 때문에 먼저 테스트하십시오.

for(int i = 0; i < 101; i++) { // <-- i++ is short for i = i + 1 
    System.out.println(i); 
    if (i % 15 == 0) { 
     System.out.println("ÒFizzBuzzÓ"); 
    } else if (i % 5 == 0) { 
     System.out.println("ÒBuzzÓ"); 
    } else if (i % 3 == 0) { 
     System.out.println("ÒFizzÓ"); 
    } 
} 
2

개발자가 if 블록으로 코드를 업데이트했기 때문에 몇 백만 달러를 잃은 애플에 관한 재미있는 이야기를 알고 있지만 ... if 문장에는 중괄호가 하나만 있고 중괄호는 없으며 그는 그것을 보지 못했습니다. 따라서 조건이 충족 될 때 그가 추가하려고했던 코드는 항상 실행되었습니다. 자바 뭔가가 변수로 해결할 수없는 말할 때

for(int i = 0; i < 101; i= i +1) { 
    System.out.println(i); 
    if (i % 15 == 0){ 
     System.out.println("ÒFizzBuzzÓ"); 
    } else if (i%3 == 0){ 
     System.out.println("ÒFizzÓ"); 
    } else if (i % 5 == 0){ 
     System.out.println("ÒBuzzÓ"); 
    } 
} 
+0

15가'3 * 5'이므로 마지막 테스트는 실행되지 않습니다. –

+1

@ElliottFrisch 맞아, 고마워. 실제로 브래킷 문제가 명백한 것처럼 논리에 신경 쓰지 않았습니다. – Dici

+0

@ElliottFrisch 실제로 두 응답을 모두 사용하여 코드를 실행했으며 실제로 코드가 Fizz와 Buzz로 실행되는 동일한 결과를 얻었습니다. 내가 여기서 뭔가를 놓치고 있니? –

0

, 그것은 일반적으로 그것이 범위를 벗어난 사용됩니다 : 귀하의 경우

, 당신은 돈을 잃지 않을 것입니다하지만 당신은 확실히 같은 실수를했다 선언했거나 전혀 선언하지 않았습니다. 귀하의 경우, 귀하의 무력화 용 루프가 문제의 원인입니다.

관련 문제