2015-09-20 21 views
0

我想編程一個基本的計算器,它需要兩個數字並添加它們。首先假定輸入的數字是整數,如果不是,它會拋出並捕獲一個異常,並假定輸入的輸入是雙精度。該程序工作正常,除非第一個輸入的數字是整數,第二個是雙倍,它只是掛起,什麼都不做。掃描儀不會記得以前輸入的整數

 /* Reads two numbers. Assuming the entered input is integer, Adds 
     * the numbers and prints out the result If not integer, throws an 
     * InputMismatchException.*/ 

     Scanner inputSource = new Scanner(System.in); 

     try 
     { 
      Integer input1, input2, result; 

      input1 = inputSource.nextInt(); 
      input2 = inputSource.nextInt(); 

      result = input1 + input2; 

      System.out.println("The Sum of " + input1 + " and " + input2 + " is " + result); 
     } 

     catch (java.util.InputMismatchException e) 
     { 

      double input1, input2, result; 

      input1 = inputSource.nextDouble(); 
      input2 = inputSource.nextDouble(); 

      result = input1 + input2; 


      System.out.println("The Sum of " + input1 + " and " + input2 + " is " + result); 
     } 
+5

「掃描儀不記得先前輸入的整數」掃描儀不應該記住任何**。 –

+0

當第二個輸入是一個Integer時,它會拋出一個異常並等待你輸入兩個雙精度值。等待輸入不是「掛起」。 – azurefrog

+0

@azurfrog你是對的我剛剛測試過。但是,如何將之前輸入的整數作爲一個雙精度? 例如:如果我輸入7和8.5 –

回答

-1

如果我正確地解釋你的問題,當你進入一個雙象第二個數字是進入你的話的catch塊,因此,你需要輸入第二個數字。要解決這個問題,你需要分開你的nextInt()方法調用來檢查雙打,而不是讓它們在同一塊try catch塊中,那麼你應該使用邏輯來決定將哪兩個值相加。

-1

我正在讀取輸入字符串並將整個字符串轉換爲double並顯示它。

這可以通過BufferedReader以不同的方式完成,可以添加try和catch塊。希望這可以幫助!!

import java.util.*; 
import java.io.*; 
public class HelloWorld 
{ 
    public static void main(String []args) 
     { 
      Scanner inputSource = new Scanner(System.in); 
      String input1 = null; 
      String input2 = null; 
      double result; 
      System.out.println("PLease enter your input sir:"); 
      input1 = inputSource.nextLine(); 
      System.out.println("PLease enter your input sir:"); 
      input2 = inputSource.nextLine(); 
      double value1 = Double.parseDouble(input1); 
      double value2 = Double.parseDouble(input2); 
      result = value1 + value2; 
      System.out.println("The Sum of " + input1 + " and " + input2 + " is " + result); 

    } 
} 
+1

感謝哥們!它幫助了很多。我也試過這種方式,但我得到一個錯誤,input1沒有初始化,我不知道如何解決。我是一個C++呃,剛開始學習java,所以不太瞭解它。無論如何,再次感謝。 –

+0

據我所知,Java很酷,C++並不是那麼容易,但它的高收益和非常流行,因爲它的複雜性。如果您瞭解C++,我很確定,您可以儘快選擇任何語言。您不必處理Java中的任何內存管理或垃圾收集,指針等。所有最好的傢伙:) – Jordon

+0

嗨法魯克汗,我注意到這個問題被標記爲重複。自從你說它的工作以來,請接受這個答案。所以這個話題可以關閉。謝謝!! – Jordon