2016-10-10 73 views
0

這是檢查餘額符號的代碼。 但是,當我嘗試裝入測試儀時, 未正確顯示安裝程序。餘額入住Java

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class BalanceCheck { 

private static Scanner in; 

public static void main(String[] args){ 
    if(args.length > 0){ 
     System.out.println(args[0]); 
     try { 
      in = new Scanner(new File(args[0])); 
      MyStack<Character> stack = new MyStack<>(); 
      String str; 
      char ch; 
      while(in.hasNext()){ 
       str = in.next(); 
       for(int i = 0; i < str.length(); ++i){ 
        ch = str.charAt(i); 
        if(ch == '(' || ch == '[' || ch == '{' || 
          (ch == '/' && i < str.length() - 1 && str.charAt(i+1) == '*')){ 
         stack.push(ch); 
        } 
        else if(ch == ')'){ 
         if(stack.isEmpty() || stack.pop() != ch){ 
          System.out.println(") is mismatched"); 
          return; 
         } 
        } 
        else if(ch == ']'){ 
         if(stack.isEmpty() || stack.pop() != ch){ 
          System.out.println("] is mismatched"); 
          return; 
         } 
        } 
        else if(ch == '}'){ 
         if(stack.isEmpty() || stack.pop() != ch){ 
          System.out.println("} is mismatched"); 
          return; 
         } 
        } 
        else if(ch == '*' && i < str.length() - 1 && str.charAt(i+1) == '/'){ 
         if(stack.isEmpty() || stack.pop() != '/'){ 
          System.out.println("*/ is mismatched"); 
          return; 
         } 
        } 
        else if(ch == '"'){ 
         if(stack.isEmpty() || stack.top() == '"'){ 
          if(!stack.isEmpty()) 
           stack.pop(); 
         } 
         else{ 
          stack.push(ch); 
         } 
        } 
       } 
      } 
      in.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 
    else{ 
     System.out.println("Command line argument is not provided.."); 
    } 
} 

} 

舉例來說,如果我編譯這個測試儀,

/*this tests an unbalanced [ operator*/ 
public class Test1 { 


/* this is the main method */ 
public static void main(String[) args) { 
    String ghana = "hello"; 
    int test = testing(); 
} 

public int testing() { 
    /*checking this too */ 
    /* and this */ 
    return 1; 
} 


} 

它應該顯示[不匹配。但是,它顯示/ *不匹配。

請讓我知道解決方案。

我必須爲上面的代碼創建一個測試器文件。

我該如何爲此測試代碼?

感謝,

回答

0

想想與第一行情況: /*this tests an unbalanced [ operator*/

當你點擊「* /」,對堆棧的頂部的「[」。

您需要跟蹤何時進入評論,以便您可以忽略所有內容直到結束。

每當遇到像這樣的問題時,都需要使用調試器。