包:
package tom.jiafei;
public class SquareEquation
{
double a,b,c;
double root1,root2;
boolean boo;
public SquareEquation(double a,double b,double c)
{
this.a=a;
this.b=b;
this.c=c;
if(a!=0)
{
boo=true;
}
else
{
boo=false;
}
}
public void getRoots()
{
if(boo)
{
System.out.println( "是一元2次方程 ");
double disk=b*b-4*a*c;
if(disk> =0)
{
root1=(-b+Math.sqrt(disk))/(2*a);
root2=(-b-Math.sqrt(disk))/(2*a);
System.out.printf( "方程的根:%f,%f\n ",root1,root2);
}
else
{
System.out.printf( "方程没有实根\n ");
}
}
else
{
System.out.printf( "不是一元二次方程 ");
}
}
public void setCoefficient(double a,double b,double c)
{
this.a=a;
this.c=c;
this.b=b;
if(a!=0)
{
boo=true;
}
else
{
boo=false;
}
}
}
主程序
import tom.jiafei.SquareEquation;
class Example
{
public static void main(String args[])
{
SquareEquation equation=new SquareEquation(4,5,1);
equation.getRoots();
equation.getRoots();
equation.setCoefficient(-3,4,5);
equation.getRoots();
}
}
当这样写时import tom.jiafei.SquareEquation;能够编译通过
当这样写时import tom.jiafei.*;就不能够编译通过了
这是为什么呢?
写成*不是导入所有的包吗?
为什么还会有这样的提示
E:\java> javac Example.java
Example.java:6: 无法访问 SquareEquation
错误的类文件: .\SquareEquation.class
类文件包含错误的类: tom.jiafei.SquareEquation
请删除该文件或确保该文件位于正确的类路径子目录中。
SquareEquation equation=new SquareEquation(4,5,1);
谢谢~
------解决方案--------------------
你的当前路径下存在SquareEquation.class文件. 删除它或者移到tom\jiafei目录下. 如果有原文件的话也要这样处理. 这样就Ok了. 这样写import tom.jiafei.SquareEquation, 编译器会直接导入这个类. 只要相应的路径下存在原文件或类文件,就会成功!
如果这样写import tom.jiafei.*;编译器并不会直接导入所有类,只是判断包是否存在.遇到SquareEquation时,并不知道有限定名,会去类路径下查找. 对于你的问题,因为它首先在当前目录下发现这个类或者原文件,同时它发现这个类是有限定名的,所以报错!