2016-07-18 13 views
-1

Ich versuche, die gcd ohne Ausnahme zu berechnen, aber das erste Mal, als ich den Code ausgeführt habe, hieß es, ich brauche eine Ausnahme für Zahlen durch Null geteilt. Als ich die try/catch-Ausnahme hinzugefügt habe, würde sie immer noch nicht von gcd berechnet. Hier ist mein Code:Ich habe Probleme beim Ausführen eines Java-Programms, das den gcd zweier Zahlen mit einer try/catch-Ausnahme berechnet

import java.util.Scanner; 
public class methodone { 
    public static void main(String[] args){ 
     int factor1; 
     int factor2; 
     int r; 
     Scanner input=new Scanner(System.in); 
     System.out.println("Enter 1st factor"); 
     factor1=input.nextInt(); 
     System.out.println("Enter 2nd factor"); 
     factor2=input.nextInt(); 
     while(factor1!=0){ 
      try{ 
       r = factor1 % factor2; 
       factor1 = factor2; 
       factor2 = r; 
      } 
      catch{ 
       System.out.println("can't divide by zero"); 
      } 
     } 
     System.out.println("GCD is"+factor1); 
    } 
} 

Was mache ich falsch

+0

Ihre Frage wird eher beantwortet, wenn Sie Ihren Code formatieren, um besser lesbar zu sein, und einige Kommentare einfügen, um Ihren aktuellen Denkprozess zu erklären. – Vidur

Antwort

0
 try{ 
      r = factor1 % factor2; 
      factor1 = factor2; 
      factor2 = r; 
     }catch (Exception e){ 
      System.out.println("can't divide by zero"); 
     } 

edit: Das tut, was Sie wollen.

+0

Jetzt druckt es nur noch unendlich oft die Meldung "Kann nicht durch Null teilen", anstatt die beiden gemeinsamen Faktoren zu drucken. Muss ich die Catch-Anweisung außerhalb der Wild-Loop sein? –

+1

Während dieser Code die Frage beantworten kann, verbessert ein zusätzlicher Kontext, warum und/oder wie dieser Code die Frage beantwortet, seinen langfristigen Wert. – FirstOne

0

Es gibt bereits eine Antwort, die einen korrekten Algorithmus für Ihr Problem bietet. Ich denke, es ist wichtig, hier einen weiteren Punkt zu nennen: Eine Ausnahme ist es, mit außergewöhnlichen Situationen umzugehen. Division durch Null ist etwas, was Sie leicht voraussehen und überprüfen können, d. H. Es ist keine Ausnahme. Das bedeutet für Ihren Code: fangen Sie die Exception nicht ab, sondern überprüfen Sie die Parameter explizit, bevor Sie etwas teilen.

Dadurch wird auch die sehr lästige und unnötige Situation vermieden, dass eine Ausnahme aus einem anderen Grund ausgelöst wird und Sie den Benutzer trotzdem darauf aufmerksam machen, dass Sie "nicht durch Null teilen" können.