2016-10-24 7 views
-2

コード:私は2つのカウント値の共通の要因を見つけるには?

public static void main(String... args){ 
    Scanner sc = new Scanner(System.in); 
    int count =0; 
    int a= sc.nextInt(); 
    int b =sc.nextInt(); 
    if(a>b){ 
     //int count =0; 
     for(int i =1;i<=a;i++){ 
      if(a/i == 0 && b/i == 0){ 
       count++; 
       System.out.println(count); 
      } 
     } 
    }else if(a<b){ 
     //int count =0; 
     for(int i=1;i<=b;i++){ 
      if(a/i == 0 && b/i == 0){ 
       count++; 
       System.out.println(count); 
      } 
     } 
    } 
} 
  1. 私はエラーが何であるかを任意の出力を得ていないのですか?
  2. 私はユーザーからの入力を受けて、一般的な要因の数を探したいと思います。
+1

ようこそ!書式設定、特にコードインデントを修正しようとする必要があります。あなたは間違いなく1つの行に複数の閉じた括弧を持つべきではありません。なぜなら、コードブロックを見るのがずっと難しくなるからです。これが習慣であることに気付かなかった場合は、[Google Java Style Guide](https://google.github.io/styleguide/javaguide.html)を読んでください。 – Aurora0001

+2

基本的な数学を確認/習得する必要があります:それらを分けることができ、答えとして0を得るための数字はありますか? 'a/i = 0' - >' a = 0 * i' - > 'a = 0'。 –

+0

@MarcB私もそう考えていましたが、整数の除算なので、除算の結果が1未満の場合、結果は0になります。このプログラムでは、ループ条件以後は決して発生しませんが。 –

答えて

0
if((a/i == 0)&&(b/i == 0)) 

この条件が間違っている - aがゼロの場合、またはそれがi未満だ場合a/iは今までにゼロになります。これは明らかにあなたが望むものではありません。

ここで必要なのは、モジュラス演算子%です。これは、2つのオペランドをお互いに分割するときに剰余を返します。

if((a%i == 0)&&(b%i == 0)) 

この変更を両方の場所で行っても、プログラムが正常に動作しているようです。

関連する問題