2016-11-02 2 views
1

宿題の割り当てのために、私は5つの静的メソッドを含むコードを記述することになっていました。そのうちの2人が次の質問をしました:
"整数Xを引数としてとり、Xが偶数の場合はtrueを返し、奇数の場合はfalseを返します。"

"正の整数Nを引数として取り、Nが素数ならば真を返し、そうでなければ偽を返すメソッドを書く.N> 1と仮定する。
私は自分のコード正しいかどうかを返すメソッドを正しく記述しているかどうかわからない

public class MethodSignature { 

public static boolean evenCheck(int x){ 
    if(x % 2 == 0){ 
     return true; 
    } 
    else{ 
     return false; 
    } 
} 

public static boolean primeCheck(int N){ 
    for(int i=2;i<N;i++){ 
     if(N % i == 0){ 
      return false; 
     } 
    } 
    return true; 
} 

public static void main(String [] args){ 
    int x = 3; 
    int N = 5; 
    System.out.println(evenCheck(x)); 
    System.out.println(primeCheck(N)); 
    } 
} 

私は方法は、真または偽のプリントアウトが必要としていた場合それは私には不明であるが書かれています。 printlnをメソッド呼び出しに追加する前に、明らかに印刷されませんでした。だから私は2つの質問があると思います:真偽を返すには真偽を印刷するブールメソッドが必要ですか?それを具体的に求められたら、私はそれを最も単純で効率的な方法でやっていますか?それとも私が紛失しているものがありますか?

ありがとうございます。
D

+6

「印刷」と「返品」は、非常に異なる2つのものです。どちらも、他の人に頼ったり、他の人と関係がありません。 – David

+0

印刷が出力されます。戻り値は、関数/メソッドと呼ばれるものにデータを戻します。彼らは完全に/まったく異なる2つのものです。 "親"は、呼び出された関数が出力するものを魔法のように見ることはありません。 –

+0

あなたのコードは良く見えます。あなたは 'System.out.println()'メソッドから得た値を出力させます。これはまさにあなたがしたいものです。 – Lehue

答えて

0

あなたの質問に答えるために:ブールメソッドがtrue偽を返すために、真/偽印刷していますか?

いいえこれは決してありません。しかし、あなたが正しいです、返すタイプを宣言する方法は、同じタイプをボディに返さなければなりません。

public boolean getBooleanValue(); // has to return a boolean 
public void getBooleanValue; // does not return anything, but has a misleading methodname 

どちらの方法でも、何も印刷できます。どちらもお互いに関係ありません。

0

ここで言及する1つのことは、という名前のです。私はすぐに再足すあなたのコードの一部で、私が何を意味するかをお見せしましょう:

public static boolean isEven(int x){ 
    if(x % 2 == 0){ 
    return true; 
    } 
    return false; 
} 

ポイントは次のとおりです。そのメソッド名がすでに提供引数であれば方法はあなたを教えてくれることを示しています。

しかし、戻ってあなたの質問に来る:実際の方法はをトレースかをロギングのいくつかの種類をしている場合は、この方法が実際に行っていることに直交です。意味:上記のisEvenの方法は、数字が偶数であるかどうかを教えてくれる方法です。 の場合は、も何か/どこかにという印字をすると便利です。そのコードをメソッドに追加するだけです。

言い換えれば、われわれはどんな種類のプリントステートメントを参考にしてもわかりません!したがって、あなたのコード、あなたの決定。

"現実の世界"の観点から見ると、そのようなトレースステートメントは、一方では不可欠なものです。一方では、素早く問題をデバッグするのに役立つ単体テストがたくさんあります。したがって、そのような痕跡は「必要」ではありません!

+1

そして、私はおそらく実装を単に 'return x%2 == 0;'に変更するでしょう。 –

+0

これは最短のコードであるとは言えません。 *初心者のために、私のバージョンは少し読みやすく、理解しやすいかもしれません*。 – GhostCat

0

印刷と返品は、2つの異なる無関係なものです。 印刷は、ユーザーに何かを通知するために使用されます。

私は値xが偶数か奇数かどうかをユーザーに知らせるためにevenCheck()メソッドを変更しました。印刷物は必須ではなく、コードが削除された場合、それは通知目的のみに影響を与えません。

戻り値の型がboolean - public static boolean evenCheck(int x)のメソッドを定義しているため、戻り値をtrueまたはfalse

0

割り当ては、メソッドがブールを返すように指定しているため、値を出力する必要はありません。あなたはあなたに短い方法でevenCheck方法書くことができ

:操作%の結果とゼロとの比較はすでにブール値です

public static boolean evenCheck(int x){ 
    return (x % 2 == 0); 
} 

を、もし/ else文を追加する必要はありません。
これで比較結果が返されます。

primeCheck方法が良いのですが、あなたは計算を変えるいくつかのパフォーマンスを追加することができます

public static boolean primeCheck(int N) 
{ 
    int middle = (int) Math.sqrt(N) + 1; 
    for (int i = 3 ; i <= middle ; i=i+2) 
    { 
     if (N % i == 0) 
     { 
      return false; 
     } 
    } 
    return true; 
} 
  • ナンバー2が常にプライム(エルゴ常にtrue)である、あなたは3
  • からforループを開始することができます素数をhalf+1Nにチェックしている場合は、half+1の後にすべての番号を確認する必要はありません。
関連する問題