2016-05-23 5 views
-1

InputMisMatch AusnahmeAusnahme wird keine Nachricht gedruckt

In Java. Ich habe den Benutzer, um zwei Zahlen einzugeben, und wenn sie nicht gleich sind, dann wird eine Eingabe-Mismatch-Ausnahme eine Nachricht ausgeben. Die Nachricht wird jedoch nicht gedruckt. was ich falsch mache.

package Day4; 
import java.util.InputMismatchException; 
import java.util.Scanner; 

public class Calculator { 
    int num1 = 0; 
    int num2 = 0; 



    void add(){ 

     Scanner sc = new Scanner(System.in); 
     System.out.println("enter two numbers:"); 
     int num1 = sc.nextInt(); 
     int num2 = sc.nextInt(); 



     try { 
      try{ 

       System.out.println(num1 + num2); 

      } 
      catch(InputMismatchException e) 
       { 
       num1 = sc.nextInt(); 
       num2 = sc.nextInt(); 
       System.out.println("Invalid Character"); 
      } 


      } 
      catch (ArithmeticException ae) 
      { 
       System.out.println("Invalid Number Try again"); 

       } 
     } 






     public static void main(String[] args) { 

     Calculator c = new Calculator(); 
     c.add(); 
     // TODO Auto-generated method stub 

    } 

} 
+0

Welche Ihren Codeteil eine Ausnahme zu werfen sein sollte, wenn die beiden Eingänge nicht gleich sind? –

+0

Sie müssen a) feststellen, ob es eine Nichtübereinstimmung gibt b) Wenn ja, werfen Sie die Ausnahme selbst - es gibt nichts in Ihrem Code, der eine 'InputMismatchException' verursacht – ochi

+0

Ihre Code-Bildung ist chaotisch. Zu Ihrer Frage: Ich würde einige Tutorials zu Ausnahmen empfehlen, z. [diese] (https://docs.oracle.com/javase/tutorial/essential/exceptions/). – Turing85

Antwort

0

Zunächst würde ich Ihnen empfehlen zu lesen, wie versuchen und fangen Blöcke arbeiten, und Multicatch.

So nach Sie Code Ich gehe davon aus Sie den Benutzer aus inputtin Nicht-Integer-Zahlen

Nun ist die Antwort verhindern wollen:

Die Linie des Codes, der die Ausnahme wirft ist:

int num1 = sc.nextInt(); 
int num2 = sc.nextInt(); 

Nicht:

System.out.println(num1 + num2); 

So ist der richtige Weg, um d o i sei:

System.out.println("enter two numbers:"); 

try { 
    int num1 = sc.nextInt(); 
    int num2 = sc.nextInt(); 

    System.out.println(num1+num2); 

} 
catch(InputMismatchException e){ 
    System.out.println("Invalid Character"); 
} 

Die AritmethicException nicht geworfen werden würde, da beide sind bereits int

+0

Danke !!! :) Ich verstehe vollkommen. Ich habe meinen Code ebenfalls gesäubert. @ J.Pichardo Ich war mir nicht sicher, ob ich den Fang mehr als einmal in einer einzigen Methode verwenden könnte. – Cb173

+0

Wenn es als Antwort funktioniert, würde ich mich freuen, wenn Sie es als Antwort markiert. Willkommen in Java. –

+0

Ja, hat es getan. Ich entschuldige mich, dass ich neu stapelweise bin. * Mach es jetzt :) @J. Pichardo – Cb173