2014-04-14 2 views
0

지금은 collectDots마다 "*"를 출력하는 코드를 작성해야하지만 collectDots == 0을 모으지 않으면 ""출력됩니다. 너무 많은 if 서술문을 사용하면 어수선 해 보입니다.이 경우 for 루프를 구현하는 방법을 배회했습니다.ifloop 문을 forloop 문으로 변환

답변

0

일반적인 원칙으로 여기에서 수행 한 재 배열의 종류가 좋습니다. 특별한 경우가 아니라 일반적인 방법으로 규칙을 표현하는 방법을 찾았습니다. 이것은 추론하고 점검하기가 훨씬 쉬우 며, 점이 3 개 이상인 경우에는 분명히 확장 할 수 있습니다.

목표 숫자와 반복 값을 혼동 시키는데 오류가 있었을 것입니다. collectDots에있는 점의 수 (if 문에 따라)가 포함되어 있으므로 최대 개수를 계산할 변수를 도입해야한다고 가정합니다 그 값

for (int i =0; i <= collectedDots; i++) 
{ 
    stars = "*"; 
    System.out.print(stars); 

} 
+0

완료 말이 내 코드가 작동이 별 = "가"아니오 수집 점 –

0

좋아요, 그럼 당신은 이미 얼마나 많은 별을 인쇄하는 숫자입니다 collectDots라는 변수가 있습니까?

그래서 루프가

for every collected dot 
    print * 

같은 것입니다하지만 당신은 단지 그것을 밖으로 인쇄 할 수 없습니다, 당신은 인쇄 될 문자열을 반환해야합니다. 그래서 지금까지 당신이 루프를 통해 캐릭터마다이 될 수있는 스타를 할당되었다는 것을 더이와 시도 사이의

for every collected dot 
    add a * to our string 

return the string 

그들은 키 차이처럼, 다음의 끝에서, 당신은 현악기와 돌려 별을 문자열에 몇 번이나 지정하더라도 문자열은 항상 하나의 별일뿐입니다. 또한 루프를 추적하기 위해 별도의 변수를 필요

,이 트릭을 수행해야합니다

String stars = ""; 

for(int i = 0; i < collectedDots; i++) 
{ 
    stars = stars + "*"; 
} 

return stars; 
+0

오 와우에 대한 인쇄되지 않는 말한다 여부를 확인하기 위해 사용하고이 프로그램은, 여전히 천천히 루프 문에 대한 제대로을 이해하려고 노력! 그래도 도움을 주셔서 감사합니다! –

0

당신은 거의 정확합니다. 루핑의 범위 제한을 변경하면됩니다. Looping 초기 값은 1로 설정됩니다. 그래서 여러분은 gather.Dots = 0을 가질 때마다 별표가 루프 이전에 초기화되므로 루프 안에 들어 가지 않고 ""를 반환 할 것입니다.

String stars = ""; 
for (int i =1; i <= collectedDots; i++) 
{ 
    stars = "*"; 
    System.out.print(stars); 
} 
return stars;