对静态方法的静态引用(在主要方法中)

问题描述:

我已经遍寻了一个我理解这个问题的答案。我正在写在那里用户输入数字的程序,然后该程序打印出号码,如果是奇数还是偶数,以及如果它是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; 
} 
} 

真的不确定如何解决此问题。我试图把“静态”放入所有的方法中,但是这些变量都被搞乱了。

注:这应该打印为“编号:偶:多”。

+1

如果要声明的方法'static',所有的外部'variable's它使用也应该是'static'。 – Compass 2014-11-24 19:43:17

+2

您可以考虑的另一种方法是创建类的实例并在该实例上调用方法/操作。 – kosa 2014-11-24 19:44:09

+0

静态方法在所有对象之间共享,这是你想要的吗? – Maroun 2014-11-24 19:46:21

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

+0

哇。非常简单,因为我的变量是静态的。谢谢你,先生! – user2800912 2014-11-24 19:46:21

+0

欢迎您的光临,我可以帮助您! – brso05 2014-11-24 19:46:38

+0

这完全是错误的解决方案。正确的解决方案是实例化一个对象并调用它的方法。 – EJP 2014-11-24 19:57:31