2016-10-30 22 views
1

整数(n)を入力し、最初の行にn文字を出力するようにプログラムを書く2行目はn-1文字、...は最後の行の1文字です。各行は文字 'A'で始まらなければなりません。最初の行の文字数は文字がここユーザに整数(n)を入力してn行の出力を出力するようにプログラムを書く

A b C d E f G h I j K l M n O p Q r S t U v W x Y z 

ことで、n個になります私のコードです:

System.out.println("How many rows for Pattern 2?: "); 
     int p2 = input.nextInt(); 
     String s = input.nextLine(); 

     char ch; 
     int i1 , j1; 
     for(i1 = p2; i1 >= 1; i1--){ 
      ch = 'A'; 
      for(j1 = 1; j1 <= i1; j1++){ 
       System.out.print(" " + ch++); 

      } 

私はプログラム

を実行しようとしたとき、私はこの文字列を得ました:

How many rows for Pattern 2?: 
16 
A B C D E F G H I J K L M N O P 
A B C D E F G H I J K L M N O 
A B C D E F G H I J K L M N 
A B C D E F G H I J K L M 
A B C D E F G H I J K L 
A B C D E F G H I J K 
A B C D E F G H I J 
A B C D E F G H I 
A B C D E F G H 
A B C D E F G 
A B C D E F 
A B C D E 
A B C D 
A B C 
A B 
A 

は、どのように私はこのような出力を得ることができます。

How many rows for Pattern 2?: 7 

    A b C d E f G 
    A b C d E f 
    A b C d E 
    A b C d 
    A b C 
    A b 
    A 
+0

偶数文字を小文字にするには、if ifテストが必要なようです。 – duffymo

+0

また、最初のn文字の文字列を書くこともできます。PrintStr = "A b C d E f ..."; – Penguino

+0

ようこそスタックオーバーフロー!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、もう少し詳しくお聞かせください。 –

答えて

0

j1場合は、'a' + j1 - 1としてj1から文字を取得します。 j1が2で割り切れない場合は、j1の文字を'A' + j1 - 1としてください。 (別の拠点に注意してください:'a''A'を。)

あなたはこのような内部ループの内容を変更することでこれを実現することができます。

for (j1 = 1; j1 <= i1; j1++) { 
    if (j1 % 2 == 0) { 
     ch = (char)('a' + j1 - 1); 
    } else { 
     ch = (char)('A' + j1 - 1); 
    } 
    System.out.print(" " + ch); 
} 
System.out.println(); 
+0

ありがとう!!出来た。 – preay

-1

印刷する前にCharacter.toLowerCase(char)メソッドに電話する必要があります。このようなものを使用して印刷ラインを交換してください:2で割り切れる

System.out.print(" " + (j1 % 2 = 0 ? Character.toLowerCase(ch++) : ch++)); 
0
import java.util.Scanner; 


public class MyPattern { 


@SuppressWarnings("resource") 

    public static void main(String[] args) { 

    //Store the letters you desire in an array of strings 
    String[] letters = {"A", "b", "C", "d", "E", "f", "G", "h", "I", "j" , "K" ,"l","M", "n", "O", "p", "Q" , "r", "S", "t", "U", "v" ,"W" ,"x" ,"Y" ,"z"}; 

    //create a Scanner object to take input from user 
    Scanner scan = new Scanner(System.in); 
    System.out.print("How many rows for Pattern 2?: "); 
    int rows = scan.nextInt(); 

    if(rows > 26 || rows < 1) throw new IllegalArgumentException("Wrong input"); //as u know, number of alphabetics is 26 

    //nested for-loop to print the required output 
     for(int i = 0; i < rows; i++) { 
      for(int j = 0; j < rows - i; j++) { 
       System.out.print(letters[j] + " "); 
      } 

      System.out.println(); 
     } 

     scan.close(); 
    } 


} 

これは間違いなく効率的かつクリーンにあなたの問題を解決します。

関連する問題