2012-02-26 1 views
1

Link to what I want and what I have상승과 자바의 중심 피라미드를 인쇄하고 내림차순 번호

I 2의 중심으로 피라미드를 인쇄하려고 해요^n은 여기서 2^행 # 각 행의 중심 수,의 숫자입니다 왼쪽은 2^행 #으로 오름차순이고 오른쪽의 숫자는 내림차순입니다. 나는 Java에 익숙하지 않았고 많은 시간을 할애하는데 정말로 시간이 걸렸습니다. 하지만 지금은 붙어 있습니다. 마지막 행만 올바른 행입니다. 나는 그것을 만드는 법을 모른다. 64 줄마다 인쇄하지 않는다. 누구든지 내게 힌트를 주시겠습니까?

나는 첫 번째 행, 마지막 행, 시작 전원 변경 등의 마지막 루프를 시작하는 모든 단일 매개 변수를 망쳐 놓으려고했는데 그걸 알아낼 수 없습니다.

감사합니다.

public static void main (String [] args){ 

    int row; 
    for (row = 0; row <= 8; row++){ // Prints each row 
     for (int spaces = 8; spaces >= row; spaces --){ // Prints out spaces to left 
      System.out.print(" "); 
     } 

     int power1 = 0; // Power that 2 is being raised to 
     for (int i = 0; i < row; i++) { // Prints left side of the pyramid 
      System.out.print(" " + (int)Math.pow(2, power1)); 
      power1++; 
     } 

     int power2 = 7; 
     for (int i = 1; i < row; i++) { // Prints right side of the pyramid 
      power2--; 
      System.out.print(" " + (int)Math.pow(2, power2));  
     } 

     System.out.println(); 
    }  
    } 
} 
+3

같은 것을 할 일을해야한다 : *** 먼저 *** 수학을 해결하고 만 *** 다음 *** 예쁜 인쇄에 작동합니다. –

+0

'power1'과 같은 다른 값으로'power2'를 초기화하십시오. –

답변

0

행의 값에 의존하지 않고 상수를 power2에 지정합니다. 이걸 시험해 볼 수 있니?

int power2 = row-1;

+0

대단히 고마워, 이것이 정확히 틀렸어. – user1234055

2

문제는 power2 = 7 해독 및 할당을 하드 코딩하기 때문에 항상 2^7에 피라미드의 오른쪽을 시작한다는 사실에 있습니다. 현재 행 -1에서이 값을 시작하면 찾고있는 동작을 얻습니다. 코드 :

public static void main (String [] args){ 

int row; 
for (row = 0; row <= 8; row++){ // Prints each row 
    for (int spaces = 8; spaces >= row; spaces --){ // Prints out spaces to left 
     System.out.print(" "); 
    } 

    int power1 = 0; // Power that 2 is being raised to 
    for (int i = 0; i < row; i++) { // Prints left side of the pyramid 
     System.out.print(" " + (int)Math.pow(2, power1)); 
     power1++; 
    } 

    int power2 = row - 1; 
    for (int i = 1; i < row; i++) { // Prints right side of the pyramid 
     power2--; 
     System.out.print(" " + (int)Math.pow(2, power2));  
    } 

    System.out.println(); 
} 
1

이 부분은 올바르지 않습니다.

 int power2 = 7; 
    for (int i = 1; i < row; i++) { // Prints right side of the pyramid 
     power2--; 
     System.out.print(" " + (int)Math.pow(2, power2));  
    } 

행 2에서는 power2 = 6이되므로 2^6 = 64로 표시됩니다.

대신 나는 당신의 문제를 분리

 int power2 = power1; 
    for (int i = 1; i < row; i++) { // Prints right side of the pyramid 
     power2--; 
     System.out.print(" " + (int)Math.pow(2, power2));  
    }