2014-11-24 182 views
1

我已經遍尋了一個我理解這個問題的答案。我正在寫在那裏用戶輸入數字的程序,然後該程序打印出號碼,如果是奇數還是偶數,以及如果它是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

回答

0

讓你的變量和方法的靜態,這將解決您的問題。只要確保你瞭解靜態和非靜態之間的區別。靜態變量和方法由特定類的所有對象(實例)共享,而非靜態變量和方法特定於特定類的每個實例。對於你正在做的變量和方法,所有的靜態變量都是正確的。或者你可以在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