2016-10-24 2 views
-2

Code:Ich möchte einen gemeinsamen Faktor von zwei Zahlenwerten finden?

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. ich, was Fehler bin keine Ausgabe zu bekommen?
  2. Ich möchte die Eingabe vom Benutzer nehmen und dann die Anzahl der gemeinsamen Faktoren finden.
+1

Willkommen bei SO! Sie sollten versuchen, Ihre Formatierung, insbesondere die Codeeinrückung, zu beheben. Du solltest auf keinen Fall mehrere enge Klammern in einer Zeile haben, da es viel schwieriger ist, die Code-Blöcke zu sehen. Wenn Sie nicht wissen, dass dies eine gute Vorgehensweise ist, lesen Sie den [Google Java Style Guide] (https://google.github.io/styleguide/javaguide.html). – Aurora0001

+2

Sie müssen grundlegende Mathe überprüfen/lernen: Gibt es irgendwelche Zahlen, wo Sie sie teilen können und 0 als Antwort bekommen? 'a/i = 0' ->' a = 0 * i' -> 'a = 0'. –

+0

@MarcB Das dachte ich mir auch, aber es ist eine Integer-Division, also wenn die Division eine Zahl kleiner als 1 ergibt, dann wird das Ergebnis 0 sein. In diesem Programm wird das aber nie passieren, da die Loop-Bedingungen nicht erfüllt sind. –

Antwort

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

Diese Bedingung falsch ist - a/i wird immer nur Null sein, wenn a Null ist, oder wenn es weniger als i. Das ist eindeutig nicht das, was du willst.

Was Sie hier brauchen, ist der Modulo-Operator, %, der den Rest zurückgibt, wenn seine zwei Operanden durch einander geteilt werden.

Mit dieser Änderung in beiden Standorten scheint Ihr Programm ordnungsgemäß zu funktionieren.

Verwandte Themen