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"?
我刚刚开始使用 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"?