2016-09-09 6 views
0

2つの数字が互いに倍数であるかどうかを確認する簡単なプログラムを書いた。数字がJavaの数字の倍数

私の問題は、整数が入力されていてもプログラムが倍数であるということです。ここで

はコードです:

import java.util.Scanner; 

public class twoIntegerMultiples { 
    public static void main(String[] args) { 

     int num1, num2; 
     Scanner input = new Scanner(System.in); 

     System.out.print("Enter first number: "); 
     num1 = input.nextInt(); 
     System.out.printf("%nEnter second number: "); 
     num2 = input.nextInt(); 

     boolean multiple = isMultiple(num1,num2); 

     if(multiple = true){ 
      System.out.printf("%n%d and %d are multiples of each other", num1, num2); 
     } 
     else{ 
      System.out.printf("%n%d and %d are not multiples of each other", num1, num2); 
     } 


    } 

    public static boolean isMultiple(int num1, int num2){ 

     int remainder = num1 % num2; 
     boolean multiple; 

     if (remainder != 0){ 
      multiple = false; 
     } 
     else{ 
      multiple = true; 
     } 

     return multiple; 
    } 

} 

誰かが私を助けることができますか?

+5

'if(multiple = true)'は 'multiple'に' true'を割り当て、その新しい値が 'true'(これは常に)であるかどうかをチェックします。 'if(multiple)'と書いてください。 – resueman

+3

'=='と比較します。割り当てのために '= '。 – jgitter

答えて

4

コードにバグがあります。

if(multiple = true) // assigning true to multiple 

ここにあなたがmultipletrueを割り当てています。あなたはtruemultipleを比較してください。

ジャワ=

if(multiple == true) // Checking if multiple is true or checking equality 

と線の上交換は、代入演算子と==オペレータに等しいです。

あなたが直接あなたのif状態でmultipleを書くことができます

別の方法:booleanデータ型を受け入れる

if(multiple) 

ifとして、私たちが直接ifmultipleを使用することができます。

+2

比較は、真偽または真偽のいずれかである新しいブール値を返すことは注目に値する。 'multiple'または'!multiple'のいずれかです。通常は 'if(multiple)'と書くだけです。 – Gendarme

+0

@Gendarme提案をいただきありがとうございます。それに応じて答えを更新。 – Abhijeet

1

multipleが間違っているかどうかを確認する演算子を使用しています。現在、あなたが持っている:これにより

if(multiple = true) //.... 

を、あなたは強制的multipletrueを割り当てている、そしてそれは常にtrueになります。これに、

また
if(multiple == true) //... '==' to check for equality. 

、あなたのisMultiple()関数はブール論理を使用して、簡素化することができます:あなたが持っている必要があり

public static boolean isMultiple(int num1, int num2){ 

    int remainder = num1 % num2; 
    boolean multiple = true; 

    if (remainder != 0){ 
     multiple = false; 
    } 
    return multiple; 
} 

実際には、あなたはさらに次のようにこれを簡素化することができます:

public static boolean isMultiple(int num1, int num2){ 
    return !(num1 % num2 != 0); 
} 
1
if(multiple = true) 

これは、複数の値をtrueに設定してからチェックするように設定します。 if ple) がtrueに設定された後、常にtrueを返します。ここで

1

int型、char型、などのブールなどのプリミティブデータ型の比較に使用==は...あなたは、固定されたミスとの完全なプログラムを持っています。代入演算子の不適切な使用に加えて

import java.util.Scanner; 
public class Main { 
    public static void main(String[] args) { 
     int num1, num2; 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter first number: "); 
     num1 = input.nextInt(); 
     System.out.printf("%nEnter second number: "); 
     num2 = input.nextInt(); 
     boolean multiple = isMultiple(num1, num2); 
     if (multiple) { 
      System.out.printf("%n%d and %d are multiples of each other", num1, num2); 
     } else { 
      System.out.printf("%n%d and %d are not multiples of each other", num1, num2); 
     } 
    } 
    private static boolean isMultiple(int num1, int num2) { 
     int remainder = num1 % num2; 
     boolean multiple; 
     if (remainder != 0) { 
      multiple = false; 
     } else { 
      multiple = true; 
     } 
     return multiple; 
    } 
} 

テスト

Enter first number: 350 

Enter second number: 7 

350 and 7 are multiples of each other 
0

、あなたはまた、その後、一般的な(%bの)で、整数aとbのためにそれを守らなければならない!=(Bの% a)、例えば2%72 = 2!= 0 = 72%2。

+0

私はあなたのコードがこれを考慮に入れる必要があると思います。 – PEF