2017-02-25 64 views
-3

我已經寫一個程序對角線字符串模式對角打印給定的字符串(如x)奇數長度

輸入:PROGRAM

預期輸出:

P  M 
R A 
    O R 
    G 
    O R 
R A 
P  M 

我的輸出:

P 
     M 
R 
     A 
    O 
    R 
     G 
    R 
    O 
    A 
    R 
     M 
P 

我的Java課程:

import java.util.*; 

class Codechef 
{ 

    public static void main (String[] args) throws java.lang.Exception 
    { 
     Scanner in = new Scanner(System.in); 
     String s = in.nextLine(); 
     char[] word = new char[100]; 
     word = s.toCharArray(); 
     int count=0; 
     int k = s.length()-1; 

     for (int i=0;i<s.length();i++){ 
      for (int j=0;j<s.length();j++){ 
       if(!(i==k)) 
        System.out.println(word[i]); 

       for(int x=0;x<s.length()-count;x++) 
        System.out.print(" "); 

       System.out.println(word[k]); 
       k--; 
       count++; 

       break; 
      } 

      for(int j=0;j<count;j++) 
       System.out.print(" ");  
     } 
    } 

} 
+2

*我的代碼中出現了什麼問題*:這就是您應該告訴我們的內容:您期望代碼的執行方式,具體來說就是使用示例輸入和輸出,以及代之以準確執行的內容。 –

+0

我需要這樣的輸出http://www.geeksforgeeks.org/print-string-of-odd-length-in-x-format/ – Sudarsan

+0

把這些關鍵信息,正確格式化的文本(使用代碼塊),放在這個問題本身。然後通過編輯您的問題回答我的其餘問題。 –

回答

0

您的邏輯只能運行水平線的上半部分。通過 去以下程序:

import java.util.*; 

class Codechef 
{ 

    public static void main (String[] args) throws java.lang.Exception 
    { 
     Scanner in = new Scanner(System.in); 
     String s = in.nextLine(); 
     char[] word = new char[100]; 
     word = s.toCharArray(); 
     int k = s.length()-1; 
     int x ; 

     for (int i=0;i<s.length();i++){ 
       if((i<k)) 
       { 
        for (x=0; x<i; x++) 
         System.out.print(" "); 
        System.out.print(word[i]); 
        for (x=0; x<k-i-1; x++) 
         System.out.print(" "); 
        System.out.println(word[k]); 
        k--; 

       } 

       else if(i == k){ 
        for (x=0; x<i; x++) 
         System.out.print(" "); 
        System.out.println(word[k]); 
        k--; 

       } 
       else{ 
        for(x = k; x >= 0 ; x--) 
         System.out.print(" "); 
        System.out.print(word[k]); 
        for (x=0; x<i-k-1; x++) 
         System.out.print(" "); 
        System.out.println(word[i]); 
        k--; 

       } 

      } 

    } 

} 

它給輸出你說。