이 문제를 해결할 수있는 방법이 많이 있으며 그림을 한 행씩 그리는 답변을 이미 보았습니다.
나는 이미 char[][]
을 생성하고 그 배열 배열의 문자를 화면에 출력하는 루틴을 가지고 있다고 가정 할 것입니다. 구조에 점을 찍기 위해 이미 setPoint()
메소드가있는 것처럼 보입니다.
초심자로서, 나는 그것이 당신에게 해결책을 제공하는 데 도움이된다고 생각하지 않습니다. 자신을 해결하려면 올바른 방향으로 향하게해야합니다.
많은 경험 많은 코더가 이제 테스트 주도 설계를 사용하므로 간단한 사례로 시작하여 테스트를 작성하고 테스트를 통과하며 더 이상의 테스트가 작성 될 때까지 더 많은 테스트를 반복하십시오 .
결국 jUnit과 같은 테스트 프레임 워크를 배워야하지만, 이제는 프로그램을 실행하여 "테스트"할 수 있습니다. 따라서 첫 번째 테스트는 height == 1
에서 작동합니까?
당신은 (지금 수단의 프로그램을 실행하고 출력 잘 보이는 것을 알)이 시험을 통과와 함께 할 수 있습니다 수행
public void drawTriangle(int height) {
drawing.setPoint(0,5,'*')
}
작업.
이
public void drawTriangle(int height) {
drawing.setPoint(0,5,'*');
if(height == 2) {
drawing.setPoint(1,4,'*');
drawing.setPoint(1,5,'*');
drawing.setPoint(1,6,'*');
}
}
이 여전히 height == 1
작동뿐만 아니라 height == 2
작동 : 이제
는
height==2
작동 확인합니다.
하지만 루프가 두 번째 행에 대한 세 명령을 대체 할 수있는 기회를 즉시 볼 수 있습니다. 그래서 :
public void drawTriangle(int height) {
drawing.setPoint(0,5,'*');
if(height == 2) {
for(int 4; i<7; i++) {
drawing.setPoint(1,i,'*');
}
}
}
... 당신은 방법으로 그것을 꺼내 수 있습니다 : 이것은 이 리팩토링이라고
public void drawTriangle(int height) {
drawing.setPoint(0,5,'*');
if(height == 2) {
drawRow2();
}
}
private void drawRow2() {
for(int 4; i<7; i++) {
drawing.setPoint(1,i,'*');
}
}
- 작품 뭔가를 쓰고 있지만, 가장 좋은 방법은 기록되지 않습니다 그것을 테스트하여 작동하는지 확인한 다음 한 번에 한 단계 씩 작성하는 방식을 변경하여 여전히 작동하지만보다 미세한 방법으로 수행합니다.
이 위치가 어디 있는지 알 수 있기를 바랍니다. drawRow2()
을 좀 더 일반적 인 것으로 수정하면 (drawRow(int rowNumber)
), 점차 그 자리에있는 문자 번호를 rowNumber
에서 파생 된 변수로 바꿀 수 있습니다. 그런 다음 drawRow(0)
을 사용하여 첫 번째 행을 그리고 drawRow(1)
을 사용하여 두 번째 행을 그립니다. 그런 다음 drawRow(2)
을 추가하여 3 개의 행 삼각형을 그릴 수 있으며 대신 루프를 사용하여 개선 할 수 있습니다.
예상되는 출력은 무엇입니까? – bradimus
@bradimus 내가 업데이트했습니다 –
h <= 0가 아닌 한, while 루프를 입력하지 않을 것이며 for 루프도 입력하지 않을 것입니다. – dogwin