我在编写静态方法时遇到了麻烦

时间:2014-10-21 16:24:02

标签: java

我在制作静态方法方面经验不足......我想要一些练习,但我遇到了一些问题。我试图制作一个你输入数字的程序,然后打印出小于b的所有正方形。例如,如果输入100,则返回0,1,4,9,16,25,36,49,64,81。 不过,我收到了错误。

  • 参数getSquares的非法修饰符;只有决赛是允许的。这是公共静态双getSquares(双b)

- 当我尝试做Squares.getSquares(100)时,方法getSquares(int)未定义Square类型; ...我猜测这是因为我的第一个问题。请帮助我,我知道静态方法很重要,但我不知道如何制作它们。

package Testers;
import java.util.Scanner;

public class Squares 
{
    public static void main(String[] args)
    {
        Squares.getSquares(100);

        public static double getSquares(double b)
        {
            double sqrtNum=Math.sqrt(b);
            int i=0;
            while(i<sqrtNum)
            {
                sqrtNum=Math.pow(i,2);
                System.out.print(sqrtNum+" ");
                i++;
            }
        }
    }
}

4 个答案:

答案 0 :(得分:7)

你不能在方法中声明一个方法 - 格式化你的代码,它更清楚。例如:

package Testers;
import java.util.Scanner;

public class Squares {
    public static void main(String[] args) {
        Squares.getSquares(100);   
    }

    public static double getSquares(double b) {
        double sqrtNum = Math.sqrt(b);
        int i = 0;
        while(i < sqrtNum) {
            sqrtNum = Math.pow(i, 2);
            System.out.print(sqrtNum + " ");
            i++;
        }
    }
}

此外,getSquares()中没有返回值 - 看起来您打算将其设为void。 最后,这个while循环:

int i = 0;
while(i < sqrtNum) {
    // code
    i++;
}

可简化为此for循环:

for (int i = 0; i < sqrtNum; i++) {
    // code
}

答案 1 :(得分:6)

如果您想将静态方法作为Squares类的方法,则不应该在main()中。它应该是Squares而不是main,例如:

public class Squares
{
     public static void main(..) {...}
     public static double getSquares(...) {...}
}

答案 2 :(得分:2)

您在另一种方法中声明了您的方法,但该方法不起作用。把它放在外面它应该是好的。

package Testers;
import java.util.Scanner;

public class Squares 
{
    public static void main(String[] args)
    {
        Squares.getSquares(100);


    }

    public static double getSquares(double b)
    {
        double sqrtNum=Math.sqrt(b);
        int i=0;
        while(i<sqrtNum)
        {
            sqrtNum=Math.pow(i,2);
            System.out.print(sqrtNum+" ");
            i++;
        }
    }
}

答案 3 :(得分:1)

在你的getSquares方法中,你需要一个return语句。