2016-02-12 101 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) –