java 小程序:帮忙看一下哪里错了 新手不太懂 编译的时候 是说:无法从静态上下文中引用非静态变量

import java.util.regex.*;
public class Mycalculator {

/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub

Zdyy ca=new Zdyy();
if(args.length != 3)
System.out.println("请输入三个参数");
else
{
if(!isNumeric(args[1]))
{
if(args[1].equals("+"))
{
System.out.println("加法运算");
System.out.println(ca.Add(Integer .valueOf(args[0]), Integer.valueOf(args[2])));
}
else if(args[1].equals("-"))
{
System.out.println("减法运算");
System.out.println(ca.Minus(Integer .valueOf(args[0]), Integer.valueOf(args[2])));
}
else if(args[1].equals("*"))
{
System.out.println("乘法运算");
System.out.println(ca.Ride(Integer .valueOf(args[0]), Integer.valueOf(args[2])));
}
else if(args[1].equals("/"))
{
System.out.println("除法运算");
System.out.println(ca.Remove(Integer .valueOf(args[0]), Integer.valueOf(args[2])));
}
else
System.out.println("第二个参数错误,要求输入+-*/运算符");
}
else
System.out.println("第二个参数错误,要求输入+-*/运算符");

}

}

public static boolean isNumeric(String str)
{
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(str);
if( !isNum.matches() )
{
return false;
}
return true;

}

}

public class zdyy{
public int Add(int a,int b)
{int num=a+b;
return num;}
public int Minus(int a,int b)
{int num=a-b;
return num;}
public int Ride(int a,int b)
{int num=a*b;
return num;}
public int Remove(int a,int b)
{int num=a/b;
return num;}

}

import java.util.regex.*;
public class Mycalculator {

/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub

Zdyy ca=new Zdyy();
if(args.length != 3)
System.out.println("请输入三个参数");
else
{
if(!isNumeric(args[1]))
{
if(args[1].equals("+"))
{
System.out.println("加法运算");
System.out.println(ca.Add(Integer .valueOf(args[0]), Integer.valueOf(args[2])));
}
else if(args[1].equals("-"))
{
System.out.println("减法运算");
System.out.println(ca.Minus(Integer .valueOf(args[0]), Integer.valueOf(args[2])));
}
else if(args[1].equals("*"))
{
System.out.println("乘法运算");
System.out.println(ca.Ride(Integer .valueOf(args[0]), Integer.valueOf(args[2])));
}
else if(args[1].equals("/"))
{
System.out.println("除法运算");
System.out.println(ca.Remove(Integer .valueOf(args[0]), Integer.valueOf(args[2])));
}
else
System.out.println("第二个参数错误,要求输入+-*/运算符");
}
else
System.out.println("第二个参数错误,要求输入+-*/运算符");

}

}

public static boolean isNumeric(String str)
{
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(str);
if( !isNum.matches() )
{
return false;
}
return true;

}

}

class Zdyy{
public int Add(int a,int b)
{int num=a+b;
return num;}
public int Minus(int a,int b)
{int num=a-b;
return num;}
public int Ride(int a,int b)
{int num=a*b;
return num;}
public int Remove(int a,int b)
{int num=a/b;
return num;}

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-02-28
你在静态方法中调用了非静态变量了。static方法只能调用static的变量。

java小程序在DOS命令行中报错,无法从静态上下文中引用非静态变量。等...
在java中无法在静态方法中调用非静态的变量,主要是因为静态时属于类的,而非静态是属于对象的,当你调用静态方法调用时,对象是否创建,变量是否初始化,是不是需要考虑?所以在java中,无法判断是否非静态的变量是否存在,即静态方法不能调用非静态变量,用现实的例子举证也是,比如你现在想调用你未来的钱...

相似回答
大家正在搜