静态引用非静态方法(主方法)

时间:2014-11-24 19:42:37

标签: java

我一直在寻找一个我理解这个问题的答案。我正在编写一个程序,用户输入一个数字,然后程序打印出数字,如果它是奇数,甚至是7的倍数。

我在这些代码行中收到此错误:

“无法对非静态方法进行静态引用方法名称

    getNum ();
    evenOdd ();
    multiple ();
    System.out.println(number1 + " : " + evenOdd + " : " + multipleOr);

这就是我的代码:

import java.util.Scanner;

public class Multiples {

int number1;
String evenOdd;
String multipleOr;

public static void main(String[] args) {
    printMsg();
    System.out.println("Enter a number: ");
    getNum ();
    evenOdd ();
    multiple ();
    System.out.println(number1 + " : " + evenOdd + " : " + multipleOr);

}

public static void printMsg() {
    System.out.println("Welcome to the Multiplicity program.");
    System.out.println("Enter a number and I will tell you if it is a multiple of 7 and if it is odd or even.");
    return;
}

public int getNum() {
    Scanner input = new Scanner (System.in);
    number1 = input.nextInt();
    return number1;
}

public String evenOdd(){
    if (number1 / 2 == 0);
        evenOdd = "EVEN";
    if (number1 / 2 != 0);
        evenOdd = "ODD";
    return evenOdd;
}

public String multiple(){
    if (number1 / 7 == 0);
        multipleOr = "MULTIPLE";
    if (number1 / 7 != 0);
        multipleOr = "NOT";
    return multipleOr;
}
}

真的不确定如何解决这个问题。我尝试将“静态”放入所有方法中,但随后变量都被搞砸了。

注意:它应该打印为“Number:Even:Multiple”。

1 个答案:

答案 0 :(得分:0)

使您的变量和方法保持静态,这将解决您的问题。只需确保您了解静态和非静态之间的区别。静态变量和方法由特定类的所有对象(实例)共享,而非静态变量和方法特定于特定类的每个实例。对于你正在做的事情,使你的变量和方法都是静态的是正确的事情。或者您可以在main方法中创建全局变量作为非静态变量,并将它们传递给需要它们的每个方法。