2015-06-03 18 views
0

我剛開始使用Java,我試圖編寫一些代碼,它將使用對話框輸入一些輸入,然後轉換/操作這些輸入進一步Java初學者編程 - 從另一種方法在對話框(JOptionPane)框中使用整數

我可以得到所需的答案,如果我只使用一種方法,但我想使用多種方法。我相信我錯誤地試圖從其他方法檢索值,但我不確定我出錯的位置。這是我迄今爲止所寫的內容 - 目標是獲取輸入數字並交換它們,然後將100和50添加到交換的數字中並顯示在對話框中。

我認爲錯誤是與第四的方法,因爲當我嘗試參考數字1或數字2在

我的代碼如下:

import javax.swing.JOptionPane; 

public class NumberSwap 
{ 

    public static void main(String[] args) 
    { 
     greeting(); 
     getFirstNumber(); 
     getSecondNumber(); 
     swapNumber(); 
    } 

    public static void greeting() 
    { 
    // display a dialog box with a message and custom Title 
    JOptionPane.showMessageDialog(null,"Welcome to my program!", "Welcome!", JOptionPane.PLAIN_MESSAGE); 
    } 

    public static int getFirstNumber() 
    { 
    // obtain user input from JOptionPane input dialogs 
    String firstNumber = JOptionPane.showInputDialog(null, "Please enter a number", "First number?", JOptionPane.QUESTION_MESSAGE); 

    // convert String inputs to int values 
    int number1 = Integer.parseInt(firstNumber); 
    return number1; 
    } 

    public static int getSecondNumber() 
    { 
    // obtain user input from JOptionPane input dialogs 
    String secondNumber = JOptionPane.showInputDialog(null, "Please enter a number", "Second number?", JOptionPane.QUESTION_MESSAGE); 

    // convert String inputs to int values 
    int number2 = Integer.parseInt(secondNumber); 
    return number2; 
    } 

    public static void swapNumber() 
    { 
    // swap number1 and number2 in order and increment the new first number by 100 and the new second number by 50 
    int swap1 = number2+100; 
    int swap2 = number1+50; 

    JOptionPane.showMessageDialog(null, "new value of first number is " +swap1, "Summary", JOptionPane.INFORMATION_MESSAGE); 
JOptionPane.showMessageDialog(null, "new value of second number is " +swap2, "Summary", JOptionPane.INFORMATION_MESSAGE); 
System.exit(0); 
    } 

}// end class NumberSwap 

回答

3

在你貼的代碼,調用方法,但你不要使用它們的返回值。您還需要將返回的值「傳遞」到swapNumber

你應該使用這樣的事情:

int num1 = getFirstNumber(); 
int num2 = getSecondNumber(); 
swapNumber(num1, num2); 

public static void swapNumber(int number1, int number2) 
{ 
    // swap number1 and number2 in order and increment the new first number by 100 and the new second number by 50 
    int swap1 = number2+100; 
    int swap2 = number1+50; 
    // etc 

一些相關的閱讀(甲骨文教程):

+0

感謝您指出了這一點,我已經打過電話在swapNumber方法getFirstNumber和getSecondNumber但正如你已經注意到返回的結果沒有被引用,所以我所做的只是再次調用這兩個方法。 – Aleksander

0

如上所述,當它們從方法getFirstNumber和getSecondNumber返回時,不會保留變量。既然你想保留一個值,並且在後面的函數中修改了多個,那麼這是使用類變量的好時機。像這樣的東西可能會更優雅。

public class NumSwap{ 

    private int num1; 
    private int num2; 

    public static void main(String[] args) 
     { 
      greeting(); 
      this.num1 = getNumber("First number?"); 
      this.num2 = getNumber("Second Number?"); 
      swapNumbers(); 
      System.exit(0); 
     } 

    public static int getNumber(String prompt) 
     { 
     // obtain user input from JOptionPane input dialogs 
     String numberStr = JOptionPane.showInputDialog(null, "Please enter a number", prompt, JOptionPane.QUESTION_MESSAGE); 

     // convert String inputs to int values 
     int number = Integer.parseInt(numberStr); 
     return number; 
     } 

    public static void swapNumber() 
     { 
     // swap number1 and number2 in order and increment the new first number by 100 and the new second number by 50 
     int swap1 = this.num2+100; 
     int swap2 = this.num1+50; 

     JOptionPane.showMessageDialog(null, "new value of first number is " +swap1, "Summary", JOptionPane.INFORMATION_MESSAGE); 
     JOptionPane.showMessageDialog(null, "new value of second number is " +swap2, "Summary", JOptionPane.INFORMATION_MESSAGE); 
     } 
} 

如果您還不熟悉類變量,請致歉。在你的具體情況下,他們可能沒有必要,但他們將來會如此。在Java(和許多其他語言)中,變量通過值傳遞,通常表示創建副本,然後編輯該副本。由於這不是問題,我會離開這個在這裏,如果你想知道更多Is Java "pass-by-reference" or "pass-by-value"?