2015-11-07 100 views
0

我的任務之一是創建一個計算器程序來實現一個解決方案,要求用戶輸入包含修復後表達式的文本行。程序應該驗證輸入,然後評估顯示評估表達式(使用中綴符號)和結果。 如果驗證失敗,則應顯示適當的錯誤消息。例如,錯誤:無效的表達式。創建一個java計算器

這是我到目前爲止的代碼:(我該如何更改代碼,以便在用戶應重複提示輸入表達式直到他們輸入空行,即按回車沒有輸入,在這一點該計劃應終止

import java.util.Scanner; 

public class Calculator { 

     public static void main(String[] args) { 
      try (Scanner scanner = new Scanner(System.in)) { 
       System.out.println("Enter a post-fix expression of the form 3 5 *:"); 
       double n1 = scanner.nextDouble(); 
       double n2 = scanner.nextDouble(); 
       String operation = scanner.next(); 

       switch (operation) { 
       case "+": 
        System.out.println("Your answer is " + (n1 + n2)); 
        break; 

       case "-": 
        System.out.println("Your answer is " + (n1 - n2)); 
        break; 

       case "/": 
        System.out.println("Your answer is " + (n1/n2)); 
        break; 

       case "*": 
        System.out.println("Your answer is " + (n1 * n2)); 
        break; 

       } 
      } 
     } 
} 
+0

您最初標記爲該JavaScript。 Java和JavaScript是不一樣的,請確保你瞭解它們之間的差異,以免將來混淆。 – mason

+2

你問過你如何添加循環。如果您想在用戶未輸入特定輸入時繼續執行,那麼您認爲什麼樣的循環適合? – mason

回答

-1

你可以用while循環包裝你的邏輯是這樣的:?。

bool get_user_input = true; 
while(get_user_input){ 
Scanner ... 
.... switch(operation){ 
....} 
if(user_input_satisfies){ 
get_user_input = false; //your finished getting input from scanner 
} 
1

while循環中寫

while(true) { 
    System.out.println("Enter a post-fix expression of the form 3 5 *:"); 
    double n1 = scanner.nextDouble(); 
    double n2 = scanner.nextDouble(); 
    String operation = scanner.next(); 
    switch (operation) { 
     case "*": 
      // Do operation 
      continue; 
     case "+": 
      // Do operation 
      continue; 
     case "": 
      break; 
    } 
} 
+0

這將檢查運營商在兩次雙打後是否爲空。 (我提交了基本語法修復的編輯。) –

+0

@DavidDuncan謝謝:)。 – Rehman

1

如果我正確理解你的要求,下一個代碼應該可以正常工作。 它會檢查你是否按下輸入。我也在檢查異常。

import java.util.Scanner; 

public class Calculator { 

    public static void main(String[] args) { 
     System.out.println("Enter a post-fix expression of the form 3 5 *:"); 
     Scanner scanner = new Scanner(System.in); 
     String line = scanner.nextLine(); 
     while (!line.equals("")) { 
      try { 
       Scanner scannerInternal = new Scanner(line); 

       double n1 = scannerInternal.nextDouble(); 
       double n2 = scannerInternal.nextDouble(); 
       String operation = scannerInternal.next(); 
       switch (operation) { 
        case "+": 
         System.out.println("Your answer is " + (n1 + n2)); 
         break; 

        case "-": 
         System.out.println("Your answer is " + (n1 - n2)); 
         break; 

        case "/": 
         System.out.println("Your answer is " + (n1/n2)); 
         break; 

        case "*": 
         System.out.println("Your answer is " + (n1 * n2)); 
         break; 

       } 
      } 
      catch (Exception ex){ 
       System.out.println("Error: Invalid expression."); 
      } 
      line = scanner.nextLine(); 
     } 
    } 
}