我发现问题在这里说,
non-static method blah blah blah cannot be referenced from a static context
这是函数convertToPostfix和convertToInfix不是静态方法....
如何解决这个问题,以便我现在可以编译我的代码。
public static void main (String[] args)
{
String n, result;
char character;
do {
character = choiceko();
switch (character)
{
case 'P':
case 'p': n=numberko("Enter a number: ");
=======> result = convertToPostfix(n); <============
JOptionPane.showMessageDialog(null,
"Infix: " + n + " to Postfix [" +result+"].");
break;
case 'I':
case 'i': n=numberko("Enter a Number: ");
=======> result=convertToInfix(n);<============
JOptionPane.showMessageDialog(null,
"Postfix: " + n + " to Infix [" +result+"].");
break;
case 'E':
case 'e': JOptionPane.showMessageDialog(null,
"Program Terminated...","Terminated",JOptionPane.WARNING_MESSAGE);
break;
default: JOptionPane.showMessageDialog(null,
" Invalid selection. Please Try Again.","ERROR",JOptionPane.WARNING_MESSAGE);
}
}
答案 0 :(得分:0)
=======> result=convertToInfix(n);<============
因为您在静态上下文中访问convertToInfix
方法(main方法是静态的),所以该方法应该是静态方法。
解决方案:
1)使convertToInfix
方法静态
或
2)创建一个具有方法convertToInfix
case 'i': n=numberko("Enter a Number: ");
ClassOfMethod instance = new ClassOfMethod();
result=instance.convertToInfix(n);
JOptionPane.showMessageDialog(null,
答案 1 :(得分:0)
由于这两个方法convertToPostfix和convertToInfix是非静态的,所以你需要创建一个类的对象,然后调用这些方法。这是因为main是static.Lets说你的类名是test.Then这样做
test t=new test();
t.convertToPostfix(n);
t.convertToInfix(n);