2015-11-04 73 views
-2
import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 
public class CalculatorFinal { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     float total = 0; 
     int operator; 
     float operand1, operand2; 
     String WELCOME="Welcome to your Postfix Calculator\n====================\n"; 
     String[] StrArray; 
     String postfix =""; 


     System.out.print(WELCOME); 



      System.out.println("Enter your postfix expression, OR to exit type stop:"); 
      StrArray = postfix.split(" "); 

      for (int i = 0; i < postfix.length(); i++) { 





     // try { 

      //Scanner myfile = new Scanner(new File ("postfix.txt")); 
      // while (myfile.hasNext()) 
      // { 
       // postfix = myfile.nextLine(); 
       // StrArray = postfix.split(" "); 


       if((postfix.length() > 3) && (operand1 = floatvalueof(postfix[0]) && (operand2 = floatvalueof(postfix[1]) && (operator = floatvalueof(postfix[2]))))) 
        { 
         try { // This deals with exceptions 

          switch(operator){ 
          case '+': 
          total = operand1 + operand2; 
          break; 
          } 

          switch(operator){ 
          case '-': 
          total = operand1 + operand2; 
          break; 
          } 

          switch(operator){ 
          case '/': 
          total = operand1 + operand2; 
          break; 
          } 

          switch(operator){ 
          case '*': 
          total = operand1 + operand2; 
          break; 
          } 


         } 
         catch (NumberFormatException e) 
          { 
          System.out.println("Error:- "+e.getMessage()); 
          } 








}}}} 

我一直試圖讓這個後綴計算器的工作,這樣,如果在7 8 +計算器將其格式化7 + 8,並給出了答案,但我似乎無法做到這一點的人的類型。任何幫助,將不勝感激。Java的後綴計算器

+0

什麼是你的問題? 「它不起作用」不是一個好問題 - 更具體一些。而且,沒有人需要註釋掉的代碼。 [我如何問一個好問題?](http://stackoverflow.com/help/how-to-ask) –

+0

抱歉它的數組部分我不明白它不斷出現錯誤。我試圖將我的值在頂部分配給數組,因此在前兩個數組中它的操作數和最後一個數組中的操作符e..g *,/。 +或 - –

回答

0

有幾件事你的代碼錯誤(或者可以改進):

  1. 變量名應駱駝套管適當地提高可讀性
  2. 分配你的操作和數字是不是真的讀
  3. 根本不讀取用戶的輸入
  4. 您有4個不同的開關盒,每個開關盒處理一種情況。交換機的整體思路是把多個案件(和默認處理)在1個開關
  5. 你不顯示你的計算
  6. 你沒有做任何事情的結果,當有人進入一個未知的操作

我強烈建議您進行調試,以便您可以逐行查看代碼正在執行的操作。

這裏是你的代碼的改進/固定的版本,所以它的工作原理,並妥善處理上述案件:

public static void main(String[] args) throws IOException 
    { 
    Double result = 0D; 

    System.out.print("Welcome to your Postfix Calculator\n====================\n"); 
    System.out.println("Enter your postfix expression, OR to exit type stop:"); 
    BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in)); 
    String input = bufferRead.readLine(); 
    if (input.toLowerCase().equals("stop")) 
    { 
     System.out.println("Received stop command."); 
     return; 
    } 

    String[] inputArray = input.split(" "); 
    if (inputArray.length == 3) 
    { 
     try 
     { 
     Double number1 = Double.parseDouble(inputArray[0]); 
     Double number2 = Double.parseDouble(inputArray[1]); 
     String operator = inputArray[2]; 

     switch (operator) 
     { 
      case "+": 
      result = number1 + number2; 
      break; 

      case "-": 
      result = number1 - number2; 
      break; 

      case "/": 
      result = number1/number2; 
      break; 

      case "*": 
      result = number1 * number2; 
      break; 

      default: 
      System.out.println("Received unsupported operator: " + operator); 
      break; 
     } 
     } 
     catch (NumberFormatException e) 
     { 
     System.err.println("Error:\n" + e.getMessage()); 
     } 
    } 
    else 
    { 
     System.err.println("Invalid number of arguments provided."); 
    } 

    System.out.println("Result: " + result); 
    }