2017-02-05 8 views
1

私はこのコードについて2つの質問があります。 if文が正確に何をしているのか誰かが私に説明できますか?私はcountがテストが真であるたびに増分しなければならないことを知っていますが、私はこのn % i == 0が何をしているのか分かりません。modulsとreturn文に関する質問

私の2番目の質問は、返信ステートメントの回答をコンソールで印刷するにはどうすればいいですか?

int n = 10; 
countFactors(n); 
    } 
    public static int countFactors(int n){ 
     int count = 0; 
     for (int i = 1; i <= n; i++){ 
     if (n % i == 0) //this line 
     count++; 
     } 
     return count; 
    } 
} 
+0

'n%i == 0'は、' n 'によって均等に分割されます( 'n/i'の残りは0) – rustyx

+0

if文が正しく作成されずコンパイルされないことを意味します。括弧内のブーリアンステートメントは、nがiで割り切れるかどうかをテストしています。 – badperson

+0

あなたのコードは何らかの形で不完全であり、検証できません。 –

答えて

2

それは例えばので、あなたの範囲1-nで除数の数を数える:

n = 10場合

1 
2 
5 
10 

となるため、結果は4になります。 OLE:

for (int i = 1; i <= n; i++) { 
    if (n % i == 0) { 
     count++; 
     System.out.println(i); 
    } 
} 
System.out.println("Number or disivor = " + count); 

あなたはここに学ぶことができる:(残りまたはモジュラス演算子として知られている)Table of divisors

+0

ご協力ありがとうございます。 – Zagros

+0

これは結果を出力せず、除数のみを出力します。 – ItamarG3

+0

あなたは大丈夫ですか?@ItamarGreen –

2

まあメソッドの名前が示すように、カウントがnが持つ約数の数を表します。

if文は次の点をテストします。nは、iで割り切れますか?。言い換えれば、n/iは整数ですか?

あなたが使用した場合:

if(n%i == 1) 

代わりに、それがために数字を数えるだろう:n/i has a remainder of 1を。 return文を印刷するために、あなただけのreturn前にこの行を追加することができます

public static int countFactors(int n){ 
    int count = 0; 
    for (int i = 1; i <= n; i++){ 
     if (n % i == 0) 
     count++; 
    } 
    System.out.println(count);//adding this 
    return count; 
} 
+0

コードではないテキストにコードの書式設定を使用しないでください。 – EJP

+0

@EJPは今より良いですか? XD – ItamarG3

1

%演算子は、基本的には、別のことで数を分割し、あなたの残りの部分と他には何を提供します。たとえば、4%2を行うと、2が4に均等に入るため、0になります。あなたが4%3をするなら、それは4/3の残りの部分であるので1を与えるでしょう。http://www.cafeaulait.org/course/week2/15.html

countFactorsループは1からnまでで、nを含みます。 10%1を実行すると、10が均等になるため0になりますので、カウントが増分されます。

+0

モジュラスの働きについての素晴らしい説明、ありがとう。 – Zagros