class Su
{
public static void main(String[] args)
{
System.out.print("100 以内的所有素数:\n");
for(int i=2;i<=100;i++)
if(isPrime(i)) System.out.print(i+"\t");
}
void Boolean isPrime(int n)
{
if(n==2) return true;
else if(n%2==0) return false;
else
{
int j=(int)sqrt(n);
for(int i=2;i<=j;i++)
{
if(n%i==0) return false;
if(i>j) return true;
}
}
}
}
编译提示:
Su.java:9: 需要 '('
        void Boolean isPrime(int n)
                     ^
1 错误

解决方案 »

  1.   

    既然isPrime需要返回一个Boolean类型的值,干嘛还要在前面加上void?
    应该写成Boolean isPrime(int n),把void去掉就OK了!
      

  2.   

    void Boolean isPrime(int n)
    这样当然是错的啦,void是不能返回任何 类型的。
      

  3.   

    可是又出了错误,请大家看一看Su.java:7: 无法从静态上下文中引用非静态 方法 isPrime(int)
                    if(isPrime(i)) System.out.print(i+"\t");                   ^
    Su.java:15: 找不到符号
    符号: 方法 sqrt(int)
    位置: 类 Su
                            int j=(int)sqrt(n);
                                       ^
    2 错误
      

  4.   

    第一个错误
    静态方法不能调用动态方法
    第二个错误
    sqrt方法是怎么来的
      

  5.   

    开跟方的方法你没记错,不过sqrt是Math的静态方法,要这样调用
    Math.sqrt(n);
      

  6.   

    楼主基础不扎实,批评一下
    main()是静态方法isPrime只可以new  一个Su对象后,通过对象来调用
    或在void Boolean isPrime(int n) 加static 
    将isPrime也定义为静态方法
      

  7.   

    int j = (int) Math.sqrt(n);
    sqrt是Math中的静态方法,用sqrt必须以Math类名引用
    另楼主倒数第二个}后面,还要有个return吧楼主不厚道,居然是0分贴
      

  8.   

    大哥!!!看看java基础再来吧,还有 居然是0分贴