2014-10-13 4 views
0

Мне нужно помочь выяснить, как изменить путь мой код печатает, я понимаю, что он собирается сделать что-то дело сИзменение способа мой код печатает

п, п-1, п-2, ... и т.д. для интервала, но как я могу сделать это так, что я получаю эту

 1 
     2 1 
    3 2 1 
... 3 2 1 

вместо этого

1 
    1 2 
    1 2 3 
    1 2 3... 

.

//A program that displays the pattern of a number entered in increasing order 
 

 
import java.util.Scanner; 
 

 
public class DisplayPattern 
 
{ 
 
    public static void main(String ar[]) 
 
    { 
 
     //Initialize Scanner 
 
     Scanner input = new Scanner(System.in); 
 
    
 
     //Get user input/ start loop 
 
     while (true) 
 
     { 
 
     //Receive user input 
 
     System.out.println("Enter a positive integer to display pattern: "); 
 
     int x = input.nextInt(); 
 
      
 
     //Show user output 
 
     displayPattern(x); 
 
      
 
     //Continuation of loop 
 
     System.out.println("Do you want to continue (Y/N)?"); 
 
     String s = input.nextLine(); 
 
     s = input.nextLine(); 
 
     s = s.toLowerCase(); 
 
     if (s.charAt(0) == 'n') 
 
      break; 
 
     }   
 
    } 
 
    
 
    public static void displayPattern(int n) 
 
    { 
 
     //Create pyramid of numbers with increasing order 
 
     for(int i=1;i<=n;i++) 
 
     { 
 
     for(int j=i;j>0;j--) 
 
     { 
 
       System.out.print(" "+j); 
 
     } 
 
      System.out.print("\n"); 
 
     } 
 
    } 
 
}

+0

Ответ просто, чтобы выяснить, сколько пространства вы хотите отобразить на каждой строке, а затем написать код, чтобы сделать это. Количество пробелов должно следовать по простому шаблону, чтобы вы могли найти простую алгебраическую формулу, которая зависит от 'i' и' n'. – ajb

+0

В качестве альтернативы вы можете создать свою строку сначала с чем-то вроде 's = s +" "+ j'. Затем, когда вся строка построена, посмотрите на 's.length()' и вычтите длину из чего-то, чтобы выяснить, сколько пробелов для печати перед печатью 's'. – ajb

ответ

1

Вы должны убедиться, что вы создаете пространство для чисел, которые не печать первых, поэтому мы всегда начинаем внутренний цикл с пользовательским вводом.

Это должно работать для вас:

public static void displayPattern(int n) { 
    // Create pyramid of numbers with increasing order 
    for (int i = 1; i <= n; i++) { 
     for (int j = n; j > 0; j--) { 
      if (j > i) { 
       System.out.print(" "); 
      } else { 
       System.out.print(" " + j); 
      } 
     } 
     System.out.print("\n"); 
    } 
} 
Смежные вопросы