2017-09-11 1 views
1

클래스에 대한 집계 카운터를 만들 때 카운터가 일정량에 도달 할 때 제한을 설정해야하지만 중지 할 때 제한을 설정해야합니다. 선생님도 "Math.max (n, 0)"과 같은 것을 사용하기를 원하지만 if 문을 사용하는 이유는 모르겠습니다.카운터가 한계에 도달하면 카운터가 멈추지 않습니다.

int i=1; 
boolean ticking = true; 
running: 
while (ticking){ 

String tally = input.nextLine();   

if (tally.equalsIgnoreCase("z")) 
{ 
    System.out.println(i++); 
    continue running; 
} 
else if (tally.equalsIgnoreCase("x")) 
{ 
    System.out.println(i--); 
    continue running; 
} 
else if (i<=0 || i>=10) 
{ 
    System.out.println("Cant go no more"); 
    continue running; 
} 
+1

당신은'ticking'의 값을 변경하지 않을 : 최대는 (N, 0) 나는이 생각이 같은 뭔가가 필요

System.out.println("Total Count: "+Math.max(i,0));


같은 개수 을 인쇄 할 것으로 예상된다 왜 '계속 달리기'를 사용하고 있습니까? – UnholySheep

+0

'if' 문에서'ticking' 변수를 false로 설정하면 카운팅이 멈 춥니 다. – pleft

+0

자신에게 물어보십시오 :'i <= 0 || i > = 10'을 가진 if 문이'z' 또는'x'를 눌렀을 때 도달 했습니까? 그리고 그 시점에서 '계속'한다면 어떻게 될까요? – BeyelerStudios

답변

2

루프 종료 조건을 지정하지 않습니다. 루프 중에 ticking은 실제로 false으로 설정되지 않습니다. 여기

, 당신은 아마 루프가 종료 할 수 있어야하지만 당신은 계속 :

else if (i<=0 || i>=10) 
{ 
    System.out.println("Cant go no more"); 
    continue running; 
} 

당신은 루프를 종료 tickingfalse에 설정하면. i<=0 || i>=10i 일 때 i<=0 || i>=10이 현재 증가 또는 감소한 후 true 인 경우 다시 루프하지 않도록하려면 else-if 문 대신 if 문을 사용해야합니다.
이 줄 것이다 : 사이드 노트로

if (tally.equalsIgnoreCase("z")) 
{ 
    System.out.println(i++); 
    continue running; 
} 
else if (tally.equalsIgnoreCase("x")) 
{ 
    System.out.println(i--); 
    continue running; 
} 

if (i<=0 || i>=10) 
{ 
    System.out.println("Cant go no more"); 
    ticking = false; 
} 

을, 당신이 표시된 루프를 사용하여 왜?
중첩 루프가 있고 외부 루프를 계속하거나 중단하려는 경우 사용하는 것이 좋습니다.

왜 각 조건문 끝에 continue 문을 추가합니까?
if-else-if 문은 true 중 하나이므로 다음 조건문을 실행하지 않습니다. 우리는 if 문을 통해 것을 사용하는 이유


선생님도 우리가 같은 것을 사용하고 싶어 "Math.max을 (N, 0)"하지만 난 볼 수 없습니다 .

확실하지 않습니다.
정확히 무엇이 요구 되는가?
어쨌든 Math.max(n,0)은 을 대체하지 않습니다.이 마지막 조건은 값이 최소 및 최대 범위 사이인지 확인하며 Math.max(n,0)은 값이 최대 값보다 우수하지 않은지 확인하는 데 도움이됩니다.

+0

나는 똑딱 거리는 것을 거짓으로 바꾸려고 시도했지만 계속 똑딱 거리고있다. 또한 계속 진술을 넣어 그렇지 않으면 내 코드가 1 틱 후 실행을 중지합니다. –

+0

@ Paladin-San 나는이 문제를 이해했다고 생각한다. 내 편집을 확인하십시오. – davidxxx

+0

많은 도움을 주신 덕분에, 나는 continue 문을 제거하여 문제를 해결했습니다. 결국 나는 그들을 필요로하지 않는 것처럼 보입니다. –

1

한도에 도달하면 똑딱 거리는 값을 false로 설정해야합니다.

if (i<=0 || i>=10) 
{ 
    ticking = false; 
    System.out.println("Cant go no more"); 
} 
1

두 가지 : tally의 값은 당신이 필요 카운트 정지 "z" 또는 "x"

2와 동일하지 않은 경우 귀하의 마지막 조건 내부

1 문, 즉 else if (i<=0 || i>=10) 블록에만 실행됩니다 똑같이 거짓으로 설정 :

else if (i<=0 || i>=10) { 
    ticking = false; 
    System.out.println("Cant go no more"); 
} 

및 수학.

 int i=1; 
     boolean ticking = true; 
     running: 
      while (ticking){ 

      Scanner sc = new Scanner(System.in); 
      String tally = sc.nextLine();   

      if (tally.equalsIgnoreCase("z")) 
      { 
       System.out.println(i++); 
      } 
      else if (tally.equalsIgnoreCase("x")) 
      { 
       System.out.println(i--); 
      } 
      if (i<=0 || i>=10) 
      { 
       ticking = false; 
       System.out.println("Cant go no more"); 
      } 
      continue running; 

     } 
    System.out.println("Total Count: "+Math.max(i,0)); 
관련 문제