繁体   English   中英

如何在非静态类中创建静态方法

[英]How to create a static method in a non-static class

“使用main()方法编写一个DieTester类,该类创建两个模具对象,掷两个骰子,打印每个骰子的值,将掷骰的总和存储在变量中,然后打印变量。

如果die的值相等,则调用一个名为getMessage()的方法,以总和作为输入(见下文),并打印返回的String。

编写一个称为getMessage()static方法,该方法将总和(一个整数)作为输入。 该方法返回与对应于给定总和的表相对应的字符串。”

我的问题是,如何在非静态类内部创建静态方法? 我无法一辈子将其编译起来,而且我知道它必须是我不了解的简单事物。
我仅指的是getMessage()方法,而不是其余的代码。

更新:修复并完美运行。 必须将getMessage()方法与main()方法分开,然后用整数和字符串修复一些错误。 还添加了一个if语句,以根据管芯是否彼此相等将输出打印为字符串。

public class DieTester2
{
    public static void main(String[] args) 
    {

        Die die1 = new Die();
        Die die2 = new Die();

        die1.setSides(6);
        die2.setSides(6);

        die1.roll();
        System.out.println("Die 1: " + die1.getValue());

        die2.roll();
        System.out.println("Die 2: " + die2.getValue());

        int sum = (die1.getValue() + die2.getValue());
        System.out.println("Sum: " + sum);

        if(die1.getValue() == die2.getValue())
        {
        System.out.println(getMessage(sum));
        }
}
        public static String getMessage(int sum) {

            String message;

            switch (sum)
            {

                case 2:
                message = "Snake Eyes!";
                break;

                case 4:
                message = "Four, the hard way!";
                break;

                case 6:
                message = "Hard Six!";
                break;

                case 8:
                message = "Eight, the hard way!";
                break;

                case 10:
                message = "Hard Ten";
                break;

                case 12:
                message = "Box Cars!";
                break;

                default:
                message = "Something went wrong";
                break;

           }

           return message;

        }
    }
}

只需将public static int getMessage()保留在main外。 而且您还应该使用String作为返回类型和返回字符串。

 public class DieTester2
    {
        public static void main(String[] args) 
        {

        Die die1 = new Die();
        Die die2 = new Die();

        die1.setSides(6);
        die2.setSides(6);

        die1.roll();
        System.out.println("Die 1: " + die1.getValue());

        die2.roll();
        System.out.println("Die 2: " + die2.getValue());

        int sum = (die1.getValue() + die2.getValue());
        System.out.println("Sum: " + sum);
      }

        public static int getMessage() {

            int message = 0;

            switch (message)
            {

            case 2:
            System.out.println("Snake Eyes!");
            break;

            case 4:
            System.out.println("Four, the hard way!");
            break;

            case 6:
            System.out.println("Hard Six!");
            break;

            case 8:
            System.out.println("Eight, the hard way!");
            break;

            case 10:
            System.out.println("Hard Ten");
            break;

            case 12:
            System.out.println("Box Cars!");
            break;

            default:
            System.out.println("Something went wrong");
            break;

            }

               return message;

            }

    }

您可以遵循以下结构:只需将getMessage()放在main()之外。

public class DieTester2{
    public static void main(String[] args) {
        // write your code here
        if(die1.getValue() == die2.getValue()){
            String message = getMessage(die1.getValue() + die2.getValue());
            // do whatever you need to do with message
        }
    }

    public static String getMessage(int sum) {
        String message;
        switch (sum){
            case 2:
                message = "Snake Eyes!";
                break;
            case 4:
                message = "Four, the hard way!";
                break;
            case 6:
                message = "Hard Six!";
                break;
            case 8:
                message = "Eight, the hard way!";
                break;
            case 10:
                message = "Hard Ten";
                break;
            case 12:
                message = "Box Cars!";
                break;
            default:
                message = "Something went wrong";
                break;
        }
        return message;
    }
}

编写一个名为getMessage的静态方法

好了,您得到了该public static int getMessage()

将总和(整数)作为输入

糟糕,不太...您需要输入int的参数。

该方法返回一个字符串

返回String ,而不是int 更改您的方法类型。

打印返回的字符串

您可以只return "something"; 而不是break ,那么您实际上可以“打印返回的消息”

System.out.println(getMessage(sum))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM