2016-02-12 99 views
1

我發現對堆棧此代碼段時,我想嘗試一下我的機器上,但它一直給我在課堂上主要未發現如何運行這部分代碼?

主要方法的錯誤,請確定的主要方法爲: 公共靜態void main(String [] args) 或JavaFX應用程序類必須擴展javafx.application.Application

任何人都可以幫我弄清楚該怎麼辦? 這是我想嘗試我的機器上

public static void main(String[] args) { 

} 
public int parse(String input) { 
     Scanner scanner = new Scanner(input); 

      return consumeLine(scanner); 
     } 

     public int consumeLine(Scanner scanner) { 
      if(scanner.hasNext("(")) { 
       return consumeExpression(scanner); 

      } else if(scanner.hasNext("IF")) { 
       return consumeIf(scanner); 
      } 
      return 0; 
     } 


     public int consumeExpression(Scanner scanner) { 
      scanner.next("("); 
      int a = scanner.nextInt(); 
      int b = scanner.nextInt(); 
      String op = scanner.next("[+-/*]"); 
      scanner.next(")"); 

      if("+".equals(op)) { 
       return a + b; 

      } else if("-".equals(op)) { 
       return a - b; 
      } 

      throw new RuntimeException("parsing error"); 
     } 

     public int consumeIf(Scanner scanner) { 
      scanner.next("IF"); 
      int exp1 = consumeExpression(scanner); 
      int exp2 = consumeExpression(scanner); 
      int exp3 = consumeExpression(scanner); 
      int exp4 = consumeExpression(scanner); 

      if(exp1 < 0) { 
       return exp2; 
      } else if(exp1 == 0) { 
       return exp3; 
      } 

      throw new RuntimeException("should not be here (TM)"); 
     } 
+2

究竟做的錯誤說'類主沒有找到Main方法,請確定的主要方法爲:公共靜態無效的主要(字串[] args)'研究如何創建一個基本的java應用程序 –

+0

我已經添加了public static void main(String [] args),但不太清楚要在其中放置什麼以使其運行 –

+0

在哪裏?我看不到它 –

回答

0

試試這個代碼的部分。

public int parse(String input) { 
     Scanner scanner = new Scanner(input); 
     return consumeLine(scanner); 
    } 

    public int consumeLine(Scanner scanner) { 
     if(scanner.hasNext("\\(")) { 
      return consumeExpression(scanner); 
     } else if(scanner.hasNext("IF")) { 
      return consumeIf(scanner); 
     } 
     return 0; 
    } 


    public int consumeExpression(Scanner scanner) { 
     scanner.next("\\("); 
     int a = scanner.nextInt(); 
     int b = scanner.nextInt(); 
     String op = scanner.next("[+-/*]"); 
     scanner.next("\\)"); 

     if("+".equals(op)) { 
      return a + b; 

     } else if("-".equals(op)) { 
      return a - b; 
     } 

     throw new RuntimeException("parsing error"); 
    } 

    public int consumeIf(Scanner scanner) { 
     scanner.next("IF"); 
     int exp1 = consumeExpression(scanner); 
     int exp2 = consumeExpression(scanner); 
     int exp3 = consumeExpression(scanner); 
     int exp4 = consumeExpression(scanner); 

     if(exp1 < 0) { 
      return exp2; 
     } else if(exp1 == 0) { 
      return exp3; 
     } 

     throw new RuntimeException("should not be here (TM)"); 
    } 

樣本輸出

System.out.println(parse(" IF (0 0 -) (1 1 +) (2 2 +) (3 3 +)")); 
// -> 4 
+0

我得到一個錯誤與解析當我嘗試在主 –

+0

nvm我得到它的工作,但即時通訊試圖弄清楚這個代碼是如何工作的,爲什麼有人可以向我解釋哪部分代碼是操作數部分?即時通訊試圖看看我是否可以讓它像(+ 3 3) –