2017-09-25 9 views
0

謝罪、私は始めて、ここで何がうまくいかないのか分からない。ユーザー入力を伴うループの場合。出力はスペースで始まります

// Declare string to hold numbers output 
     String lottoNum = ""; 

     // Declare scanner variable 
     Scanner scan1 = new Scanner(System.in); 

     // Ask user for numbers 
     System.out.println("To buy a ticket we need your numbers..."); 

     // Set up loop for 6 numbers 
     for (int i = 1; i<=6; i++) 
     { 
      System.out.println("Please enter lotto number " + i); 
      String num = scan1.nextLine(); 
      lottoNum = lottoNum + ", " + num; 
     } 
     System.out.println(lottoNum); 

意図したようにそれは、すべての6つの数字の集まりでlottoNumを返すとき、それは「」で始まる6を介してでも、最後にロット番号1を求め、ループします。

Please enter lotto number 5 
28 
Please enter lotto number 6 
19 
, 22, 12, 4, 38, 28, 19 

なぜこの "、"で始まるのですか?そして、これを最初から入れないようにすることはできますか?

+2

これは最初に追加するもので、実際には 'lottoNum'の初期値は空文字列です。最初に行うのは空の文字列の連結結果を割り当てることです"、"と最初の番号。 – CBroe

+0

初めてのため、空の文字列に "、"を追加します – jr593

+0

ループの最初の実行時に 'lottoNum'は' '' 'なので、この行では' '、22" 'に設定されます' lottoNum = lottoNum + "、" + num; " – Henry

答えて

0

追加条件:

lottoNum = lottoNum + num; 
if (i < 6) lottoNum = lottoNum + ", "; 

それが最後の番号以外の各番号の末尾に,を追加します。

+0

私の現在の知識を理解するのがこれが一番簡単だと思います。本当にありがとう! – Stephen

1

新しい文字列を作成するのは最適ではありません。すべてのnumをリストに集めて組み込みのString.joinメソッドを使用することをお勧めします。

もちろん、数字の解析時にはscanner.nextLine()の代わりにscanner.nextInt()を使用する方がよいでしょう。

// Declare scanner variable 
    Scanner scan1 = new Scanner(System.in); 

    // Ask user for numbers 
    System.out.println("To buy a ticket we need your numbers..."); 

    List<Integer> nums = new ArrayList<Integer>(); 
    // Set up loop for 6 numbers 
    for (int i = 1; i<=6; i++) 
    { 
     System.out.println("Please enter lotto number " + i); 
     nums.add(scan1.nextInt()); 
    } 
    System.out.println(String.join(',', nums)); 
+0

今は彼にとってはあまりにも難しいかもしれません。 – apocalypse

0

forループの前に最初の番号を保存してください。

次に、forループで2,3,4,5,6の数字を聞いてください。

0

おそらくあなたは、目的の動作を取得するためにStringJoinerクラスを使用したいと思います:

StringJoiner sj = new StringJoiner(", "); //argument passed will separate passed objects 
sj.add(String.valueOf(12)); 
sj.add(String.valueOf(24)); 
sj.add(String.valueOf(50)); 
System.out.println(sj); 

出力:

12, 24, 50 

あなたは3つのパラメータでStringJoinerコンストラクタを使用することができます - あなたは定義するためにそれを使用することができます接頭辞と接尾辞も同様です。

関連する問題