2012-06-15 76 views
1

我明白如何將變量傳遞給另一個方法,我甚至學會了如何對單個方法執行多個變量。我的問題是我試圖做一個切換聲明,當用戶在聲明中輸入地高辛(用於心臟的藥物)的症狀時,我想授予他10分將其存儲在變量中,並且當用戶輸入另一個症狀時我想將其存儲在變量中以及使用新方法。我的問題是,在將變量發送給我的方法並繼續執行該程序之後,它不可避免地將其重置爲零,從而耗盡我的努力。將變量傳遞給方法並停止重置變量

代碼:

switch(input5) { 
    case "Vomiting": 
     score = 0; 
     num = 0; 
     score = num + 10; 
     getMethod(score,0); 
     System.out.println(getMethod(num)); 
     JOptionPane.showMessageDialog (null,"you're correct") ; 
     break; 
    case "Dizziness": 
     JOptionPane.showMessageDialog (null,"you're correct") ; 
     score = num + 10; 
     getMethod(0,score); 
     break; 
    case "Confusion": 
     JOptionPane.showMessageDialog (null,"you're correct"); 
     break; 
    case "Vision": 
     JOptionPane.showMessageDialog (null,"you're correct"); 
     break; 
    default : 
     JOptionPane.showMessageDialog (null,"you're Wrong"); 
     break; 
    } 
... 
static int getMethod(int total) { 
    int amount = total; 
    int amount2 = total2; 
    int result = amount + amount2; 
    return result; 
} 
+0

在你的第一個case/switch語句中,你將score和num設置爲0 –

回答

0

我覺得這裏的問題是,每次你輸入一些東西,輸入您的switch語句的時候,它重置分數爲0

switch(input5){ 
      case "Vomiting": 
      score = 0; 

我認爲你需要在第一次輸入之前將分數設置爲0,並且每次嘔吐時不重置。我不能完全遵循你的代碼,請鏈接完整的課程。

0

試試這個:

score = getMethod(score, 0); 

在java中,原語 「按值傳遞」。將,而不是變量傳遞給該方法。改變方法內的值沒有什麼到用於調用方法的變量。

0

創建一個靜態全局變量來保持或保持得分。這將允許您隨後撥打您的方法並仍然記錄準確的分數。

因此,創建一個全局變量public static int score = 0;。由於您將使用全局樂譜變量,所以在您的方法內部,您可以擺脫樂譜變量初始化爲零score = 0;

2

這個問題的問題在於它的表達如此糟糕以至於難以理解實際上認爲正在發生的事情。除非我們明白,否則很難正確回答。所以我只想指出一些看起來在你的想法中是錯誤的東西。

  • 變量不會在Java中「重置」。在這種情況下,問題是您的getMethod方法不會更新score

  • 如果一個方法返回一個值,該值不分配給的東西,然後它被扔掉。在你的情況下,你沒有在你調用的地方分配getMethod返回的值。

  • 在Java中,參數傳遞給方法「的價值。」結果是,這樣的事情是行不通的:

    int test = 1; 
    increment(test, 2); 
    
    public void increment(int value, int by) { 
        // FAIL - the local copy of "value" is incremented, but the 
        // the original "test" variable is not touched. 
        value = value + by; 
    } 
    

    請注意,這與變量的名稱無關。問題在於方法內部的變量沒有以任何方式與呼叫站點使用的變量「連接」。該方法更新前者...而不是後者。關於你的代碼可以說


需要有兩件事情:

  • 始終如一地縮進你的代碼是很重要的。有風格指南告訴你該怎麼做。 (我們用一種在大多數樣式指導下可以接受的方式重新編寫代碼。)

  • 對於像方法,變量和類這樣的東西使用明智的和信息性的名稱是很重要的。這有助於讀者瞭解代碼作者意圖代碼的意思。在你的情況下,「getMethod」告訴讀者什麼方法應該做什麼。

  • 方法還應該有javadoc評論,說明他們應該做什麼,參數和結果是什麼意思等等。

+0

對不起,關於我這個問題的糟糕措詞。我只是想讓我的變量保持價值。然後我想將該值傳遞給我的方法並生成一個平均值。我的總體目標是爲我的護理學校開設一個小型藥物測驗。 – Louis345

+0

好的,但是這仍然不能解釋你具體的想法...或者事件*其中你實際上在談論什麼*變量。無論如何,我希望我的答案和其他方面的觀點應該足夠了......如果你仔細閱讀。 –

+0

@StephenC通過值「'傳遞給參數傳遞給方法」這個短語應該是'原始類型參數傳遞給方法的值''值' –