2014-12-08 2 views
0
import java.util.Scanner; 
public class Ideone 
{ 

    public static void main(String[] args) 
    { 
     int reader; 
     Scanner kBoard = new Scanner(System.in); 
     do 
     { 
      System.out.println("Insert a number of rows: "); 

       reader = kBoard.nextInt(); 
       printDiamond(reader); 


     }while(reader != 0); 

    } 

    public static void printWORD(int n) 
    { 
     if(n >= 1) 
     { 
      System.out.print("SAMPLE"); 
      printWORD(n - 1); 
     } 
    } 

    public static void printTopTriangle(int rows) 
    { 
     int x = 1; 
     for(int j = (rows - 1); j >= 0; j--,x +=2) 
     { 
      printSpaces(j); 
      printWORD(x); 
      System.out.print("\n"); 
     } 
    } 

    public static void printSpaces(int n) 
    { 
     if(n >= 1) 
     { 
      System.out.print(" "); 
      printSpaces(n - 1); 
     } 
    } 

    public static void printBottomTriangle(int rows, int startSpaces) 
    { 
     int x = 1 + (2*(rows - 1)); 
     for(int j = startSpaces; j <= (rows) && x > 0; j++,x -=2) 
     { 
      printSpaces(j); 
      printWORD(x); 
      System.out.print("\n"); 
     } 
    } 
    public static void printBottomTriangle(int rows) 
    { 
     int x = 1 + (2*(rows - 1)); 
     for(int j = 0; j <= (rows - 1) && x > 0; j++,x -=2) 
     { 
      printSpaces(j); 
      printWORD(x); 
      System.out.print("\n"); 
     } 
    } 

    public static void printDiamond(int rows) 
    { 
     printTopTriangle((int)rows/2 + 1); 
     printBottomTriangle((int)rows/2, 1); 
    } 
} 

내 프로그램에서 "SAMPLE"이라는 단어로 만들어진 다이아몬드 모양이 표시됩니다. 그러나 나는 그것을 실행할 때 우주선 모양을 보여줍니다. "SAMPLE"이라는 단어가있는 완벽한 다이아몬드를 인쇄 할 수 있도록이 오류를 어떻게 수정합니까?프로그램 실행시 모양이 잘못됨

+0

고마워의 길이입니다! 이제 완벽하게 작동합니다! –

답변

0

변경은 다음과 같습니다

public static void printTopTriangle(int rows) 
    ... 
    printSpaces(j*6); 



public static void printBottomTriangle(int rows, int startSpaces) 
    ... 
    printSpaces(j*6); 

참고 : 6 일정한 SAMPLE

0

"SAMPLE"(6 문자)의 크기 때문에 System.out.print(" "); (예 : 6 공백이 아닌 1)을 들여 써야합니다.

의 Runnable 데모 : http://ideone.com/JHTU6C

주의 : 나는 아무것도 해결되지 않았다 당신이 "*"와 "SAMPLE"을 변경하는 경우

0

(당신은 nextInt()으로 요청하기 전에 check if an int exists를 할 수 있습니다) 또는 다른 숯 당신은 다이아몬드 모양을 얻을. printSpaces 메서드에 충분한 공간을 넣지 않아서 우주선 모양을 얻습니다. 공백 수는 printWORD 메서드에서 인쇄 할 수있는 문자 수와 비슷해야합니다. printSpaces 메서드에 5 또는 6 공백을 넣으면 다이아몬드에 가까운 것을 얻을 수 있습니다. 이러한 방법