2014-02-18 2 views
0

я должен написать код программы, чтобы напечатать этот вывод:Программа, которая печатает следующую картину

        1 
            212 
           32123 
           4321234 
           543212345 

Я успешно кодированный эту часть рисунка:

        1 
            12 
            123 
            1234 
            12345 

Однако, я не достигая второй части. Вот мой код:

for(int i=1; i<=5; i++) { 
    for(int j=1; j<=i; j++) { 
     System.out.print(j); 
    } 
System.out.println(); 
} 
+0

Возможно, вам стоит попробовать распечатать половину, которую вы хотите/нуждаетесь в другой части кода, а затем подумайте о смешивании обоих. –

+0

Код выглядит как треугольник! – user3140507

+0

Вы можете найти этот вопрос CodeGolf nice: http://codegolf.stackexchange.com/questions/8696/print-this-diamond – everton

ответ

0

Вам просто нужна другой jfor петли перед вашим текущей jfor цикла, который отсчитывает от 5 (но не включая) 1. Решите, нужно ли печатать пробел или j, в зависимости от того, j больше, чем i.

for (int j=5; j > 1; j--) { 
    if (j > i) 
     System.out.print(' '); 
    else 
     System.out.print(j); 
} 
+0

Есть ли какой-либо код, кроме декрементирования и без использования инструкции if/else? – user3140507

1

Почему не рекурсивно? Просто потому, что это весело;)

public static void main(String args[]) { 
    System.out.println(pyramid(5)); 
} 

public static String pyramid(int rank) { 
    if (rank == 1) { 
     return "1\n"; 
    } 
    return pyramid(rank - 1) + mirror(rank) + "\n"; 
} 

public static String mirror(int rank) { 
    if (rank == 1) { 
     return "1"; 
    } else { 
     return rank + mirror(rank - 1) + rank; 
    } 
} 
+0

Это весело; однако, я новичок: P – user3140507

0

Как кто-то уже отмечалось, вы можете сделать это легко с двойным для петли, один отсчет от I, один подсчитывая:

for(int i=1; i<=5; i++) { 

     for(int j=i; j>=2; j--) { 
      System.out.print(j); 
     } 
     for(int j=1; j<=i; j++) { 
      System.out.print(j); 
     } 
     System.out.println(); 
    } 

Вы также можете выполните одно и то же в одном цикле, если вы не печатаете сразу. Например, вы можете построить StringBuffer с одним, затем добавить числа с каждой стороны до i == j, а затем распечатать за пределами внутреннего цикла.

for(int i=1; i<=5; i++) { 
     StringBuffer buffer = new StringBuffer(); 
     buffer.append(1); 
     for(int j=2; j<=i; j++) { 
      buffer.insert(0, j); 
      buffer.append(j); 
     } 
     System.out.println(buffer); 
    } 
0
package recAaA; 

public class testA { 

    static void rec(int startVal, int endVal) 
    { 
     if(startVal==0)startVal=-2; 
     if(startVal<-endVal) return; 
     System.out.print(Math.abs(startVal)); 
     rec(startVal-1,endVal); 

    } 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     int imax=5; 
     for(int i=1;i<imax+1;i++) 
      { 
        for(int j=0;j<imax+1-i;j++) 
        { 
         System.out.print(" "); 
        } 
        rec(i,i); 
        System.out.println(); 
      } 
    } 


} 

Выход:

 1 
    212 
    32123 
    4321234 
543212345 

, если Я даю StartVal и я + 1 до endVal, выход становится

 12 
    2123 
    321234 
    43212345 
5432123456 
0

Вот код, который выдает номера; все, что вам нужно сделать, это установить интервал.

for (int i = 1; i <= 9; i++) { 
     BigInteger b = 
      BigInteger.TEN.pow(2*i-1) 
      .subtract(BigInteger.ONE) 
      .divide(BigInteger.valueOf(9)) 
      .multiply(BigInteger.valueOf(i+1)) 
      .subtract(BigInteger.TEN.pow(i) 
         .subtract(BigInteger.ONE) 
         .divide(BigInteger.valueOf(9)) 
         .pow(2)); 
     System.out.println(b); 
    } 

То есть, для каждого целого числа в диапазоне 1-9, он печатает ((10 2n-1 -1)/9) (N + 1) - ((10 п -1)/9) . Очень просто.

-1
public class test { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 


     Scanner in = new Scanner(System.in); 
     System.out.print("Enter no "); 
     int n=in.nextInt(); 

     for(int i=1;i<=n;i++) 
     { 
      int l=n-i; 
      while(l!=0) 
      { 
       System.out.print(" "); 
       l--; 
      } 
      for(int j=i;j>=2;j--) 
      { 
       System.out.print(j); 

      } 

      for(int k=1;k<=i;k++) 
      { 


       System.out.print(k); 

      } 


      System.out.println(); 
     } 
    } 

} 
+0

Упование вы получили ваш желаемый образец –

0
/* Basically logic is that in a horizontal line upto the mid ,the number is decrementing and after the mid, the number starts incrementing 
*/ 


public class java { 

    public static void main(String[] args) throws IOException { 
     int n; 
     InputStreamReader io = new InputStreamReader(System.in); 
     BufferedReader br = new BufferedReader(io); 
     System.out.println("Enter the height in the number of lines vertically"); 
     n = Integer.parseInt(br.readLine()); 
     for (int i = 1; i <= n; i++) { 
      int k = i; 

      for (int j = 1; j <= 2 * i - 1; j++) { 
       System.out.print(k); 
       if (j >= (((2 * i - 1)/2) + 1)) 
        k++; 
       else if(j<(2*i-1)/2+1) k--; 
      } 
      System.out.println(); 
     } 
    } 
} 

Я надеюсь, что это поможет!

Смежные вопросы