【问题标题】:I'm having trouble writing static methods我在编写静态方法时遇到问题
【发布时间】:2014-10-21 16:24:01
【问题描述】:

我在制作静态方法方面不是很有经验...我想要一些练习,但我遇到了一些问题。我正在尝试编写一个程序,您可以在其中输入一个数字并打印出所有小于 b 的正方形。例如,如果输入 100,则返回 0、1、4、9、16、25、36、49、64、81。 不过,我遇到了错误。

  • 参数 getSquares 的非法修饰符;只允许final。这个就行了 public static double getSquares(double b)

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

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++;
            }
        }
    }
}

【问题讨论】:

  • 你在方法中声明了一个方法。

标签: java


【解决方案1】:

您不能在方法中声明方法 - 格式化您的代码,这样可以更清楚地看到。示例:

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
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      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++;
              }
          }
      }
      

      【讨论】:

      • @bcsb1001 我已经更正了格式;选项卡有一些问题,我需要打开记事本。
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2016-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-27
        • 1970-01-01
        • 2013-09-15
        • 2013-05-05
        • 2020-12-31
        相关资源
        最近更新 更多