【问题标题】:error: non-static method PostFixConverter(String) cannot be referenced from a static context [duplicate]错误:无法从静态上下文引用非静态方法 PostFixConverter(String) [重复]
【发布时间】:2016-03-03 05:25:48
【问题描述】:

我正在做一些硬件,目前很难过。 它为 ArrayStack 提供了一个接口和一个类,并要求编写一个将中缀转换为后缀的代码。 在我的主要方法中是这一行

PostFixConverter(infixExpression);  

调用计算后缀表达式的方法。 我的问题是 ArrayStack 类不是静态的,但我的主要方法是,那么我该如何解决这个问题?

还有,

我是否通过不创建一个计算后缀的新类将中缀转换为后缀错误,因为我见过的所有其他代码都有一个单独的类?这样做有好处吗?

谢谢!

【问题讨论】:

  • 要么将方法设为静态,要么创建类的实例,然后调用该方法。

标签: java static-methods non-static


【解决方案1】:

第一次查询请参考以下内容:

public static void main (String[] args)
{
    String infixExpression = "Your infix string";
    PostFixConverter(infixExpression);  
}

private static void PostFixConverter(String infixExpression) 
{
    //your code goes here
}

对于第二个查询,您可以选择这样做。

【讨论】:

  • 将方法更改为 private static void PostFixConverter(String infixExpression){ 现在可以编译了!谢谢!然而,新的问题出现了。
  • 请分享问题。
  • 我的程序假设从具有中缀表达式的文件中读取,打印出来,转换为后缀并打印出来。输出示例:中缀表达式 = ((9/3)-2) 后缀表达式 = 93/2- 文件读取良好。但是,当我运行我的程序时,它会打印出中缀表达式并继续运行。没有其他事情发生。我对此提出质疑会有所帮助吗?
  • 您可以使用代码 sn-p 添加新问题。
  • 通过在一些 if 中添加 else 来修复正在运行的东西。如果我再次被卡住,我会问。谢谢!
【解决方案2】:

在主方法中创建类的对象,如下所示并调用非静态(实例方法)

ArrayStack arrayStack = new ArrayStack();                                        
arrayStack.postFixConverter(infixExpression);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    相关资源
    最近更新 更多