Java 中的初学者编程 - 在另一个方法的对话框 (JOptionPane) 框中使用整数

Beginner Programming in Java - using an integer in a Dialog (JOptionPane) box from another method

我刚刚开始使用 Java,我正在尝试编写一些代码,这些代码将使用对话框获取一些输入,然后 transform/manipulate 进一步输入这些输入

如果我只使用一种方法可以得到想要的答案,但我正在尝试使用多种方法。我相信我错误地尝试从其他方法中检索值,但我不确定我哪里出错了。这是我到目前为止所写的 - objective 是获取输入数字并交换它们,然后将 100 和 50 添加到交换后的数字并显示在对话框中。

我认为错误出在第四种方法中,因为当我尝试在

中引用 number1 或 number2 时

我的代码如下:

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

在您发布的代码中,您调用了方法,但您使用它们的返回值。您还需要 "pass" 将返回值 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

一些相关阅读(Oracle教程):

如上文所述,当变量 return 来自方法 getFirstNumber 和 getSecondNumber 时,您不会保留它们。由于您想保留一个值并 在后面的函数中修改多个 ,现在是使用 class 变量的好时机。这样的东西可能更优雅。

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);
       } 
}

如果您还不熟悉 class 变量,我深表歉意。在您的特定情况下,它们可能不是必需的,但将来会变得如此。在Java(以及许多其他语言)中,变量按值传递,通常意味着制作一个副本,然后编辑该副本。由于这不是问题,如果您想了解更多,我会把它留在这里 Is Java "pass-by-reference" or "pass-by-value"?