2016-07-18 10 views
-1

私のプログラムは40行のランダムな大文字を印刷し、1行に10文字を印刷し、1行に10文字も印刷します。ランダムなレター/ナンバージェネレータにスペースを挿入して出力を揃える方法は?

私のコードは次のようになります。

import java.util.Random; 

public class Program1 { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     System.out.println("Random uppercase letters: "); 
     for(int i = 0; i < 40; i++) { 
      System.out.print(randomLetter()); 
      if(i % 10 == 0) 
       System.out.print("\n"); 
     } 
     System.out.println("\n"); 
     System.out.println("Random single digits: "); 
     for(int i = 0; i < 40; i++) { 
      System.out.print(randomNumber()); 
      if(i % 10 == 0) 
       System.out.print("\n"); 
     } 
    } 

    public static char randomLetter(){ 
     int letter = (int) (Math.random()*26) + (int) 'A'; 
     return (char)letter; 
    } 
    public static char randomNumber(){ 
     int number = (int)(Math.random()*10) + (int) '0'; 
     return (char)number; 
    } 
} 

これは私が得る出力されます:

Random uppercase letters: 
Q 
OWGUAPCUQE 
IFLKOJMDMF 
WOBJDBIDXR 
VVOTGLXCU 

Random single digits: 
7 
6391852294 
0333642849 
3598298753 
914350922 

私はすべて自分でQと7がライン上にある理由の説明を取得してくださいすることができどのように修正できますか? また、各文字と数字の間にスペースを挿入するにはどうすればよいですか?

+1

'i%の値が異なると' i%10 == 0 'と評価されます。ループは 'i = 0'で始まるので、' i'が '0'のときは' i%10'となりますか?等。 – Jesper

+0

'i%10 == 9'を使用してください。 – maskacovnik

+1

ヒント:デバッガでプログラムを実行することでそのようなことを理解できます。他の人に助けを求めるのは大丈夫ですが、そのような状況では、あなたは何かをすることでもっと力を尽くそうとします。 – GhostCat

答えて

2

IDEデバッガの使用を開始して、フローを理解してください。

iゼロで始まり、第i%10==0代わりに1でループを開始し= 40 <で終わり、したがって最初の新しい行を

を印刷し、叶います。また、printメソッド内にスペースを追加することもできます。

import java.util.Random; 

public class Program1 { 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    System.out.println("Random uppercase letters: "); 
    for(int i = 1; i <= 40; i++) { 
     System.out.print(randomLetter()+" "); 
     if(i % 10 == 0) 
      System.out.print("\n"); 
    } 
    System.out.println("\n"); 
    System.out.println("Random single digits: "); 
    for(int i = 1; i <= 40; i++) { 
     System.out.print(randomNumber()+ " "); 
     if(i % 10 == 0) 
      System.out.print("\n"); 
    } 
} 

public static char randomLetter(){ 
    int letter = (int) (Math.random()*26) + (int) 'A'; 
    return (char)letter; 
} 
public static char randomNumber(){ 
    int number = (int)(Math.random()*10) + (int) '0'; 
    return (char)number; 
} 
} 
+0

素早く応答してくれてありがとう!以前はprintステートメントで+ ""を試していましたが、うまくいきませんでしたが、今は問題ありません。 –

+0

@RohithL。答えがあなたの目的を解決すれば、plzはそれを答えたものにします – sidgate

3

問題は、0/10 = 0です。したがって、モジュラス関数が成り立ちます。モジュラス以外にもi != 0が確実に入るように条件を追加してください。それはそれを処理する必要があります。

関連する問題