Java 在Main中创建的输入变量的值与在方法中创建的输入变量的值不同
我创建了一个从用户那里获取输入的方法。然而,我的问题是,当我试图返回方法的值时,它会不断地要求输入一个新的数字。相反,我希望它要求一次数字,然后返回它 例如:下面的代码说明了我想要在没有方法的情况下实现什么,但将其包含在方法中会带来困难: 主管道内的工作代码:Java 在Main中创建的输入变量的值与在方法中创建的输入变量的值不同,java,Java,我创建了一个从用户那里获取输入的方法。然而,我的问题是,当我试图返回方法的值时,它会不断地要求输入一个新的数字。相反,我希望它要求一次数字,然后返回它 例如:下面的代码说明了我想要在没有方法的情况下实现什么,但将其包含在方法中会带来困难: 主管道内的工作代码: public static void main(String[] args) { Scanner input = new Scanner(System.in); int age; System.out.pr
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int age;
System.out.print("Enter Age: ");
age = input.nextInt();
System.out.print("/nYou're " + age + " years of age.");
}
然而,当我试图在一种方法中实现这一点时,我遇到了困难:
方法中的代码:
public static int getAge() {
Scanner input = new Scanner(System.in);
int number;
number = input.nextInt()
return number;
}
问题是,每当我尝试打印System.out.print(getAge());它每次都要一个数字。为什么第一个代码允许我打印年龄而不要求一个新号码,但是调用方法打印号码会导致问题并继续要求一个新号码
实际上,我只想调用该方法,请求输入一个号码一次,然后调用该方法返回用户输入的号码 您可以将用户输入存储在类成员变量中,并在以后重用它
import java.util.Scanner;
public class MyClass {
private int age = -1;
public static void main(String[] args) {
MyClass o = new MyClass();
o.getAge();
System.out.print("\nYou're " + o.getAge() + " years of age.");
}
public int getAge() {
if (age == -1) {
Scanner input = new Scanner(System.in);
System.out.print("Enter Age: ");
age = input.nextInt();
}
return age;
}
}
您可以将用户输入存储在类成员变量中,并在以后重用它
import java.util.Scanner;
public class MyClass {
private int age = -1;
public static void main(String[] args) {
MyClass o = new MyClass();
o.getAge();
System.out.print("\nYou're " + o.getAge() + " years of age.");
}
public int getAge() {
if (age == -1) {
Scanner input = new Scanner(System.in);
System.out.print("Enter Age: ");
age = input.nextInt();
}
return age;
}
}
您的问题是,每次调用
getAge()
时,它都会创建一个新的扫描仪并再次尝试获取输入。相反,当您第一次从getAge()
返回数字时,请将该值保存在一个可以重用的变量中
大概是这样的:
int age = getAge();
System.out.print("your age is " + age + " years of age");
您的问题是,每次调用
getAge()
时,它都会创建一个新的扫描仪并再次尝试获取输入。相反,当您第一次从getAge()
返回数字时,请将该值保存在一个可以重用的变量中
大概是这样的:
int age = getAge();
System.out.print("your age is " + age + " years of age");
这不仅仅是关于有代码来完成这项工作,还涉及到设计。我建议采用以下方法,其特点是:
- 一个实用程序类和一个通用方法
,用于提示用户输入并传递消息promptUserInput
- 它将返回一个字符串对象,并根据需要将其转换为其他对象
- 如果您想从其他方法/类访问它,则将其存储为实例变量,否则只需将其用于打印或任何您的计划
public class UserTest {
public static void main(String[] args) {
User user = new User();
user.promptUserAge();
user.printUserAge(user.getUserAge());
//DO something.
user.printUserAge(user.getUserAge());
user.promptUserAge();
user.printUserAge(user.getUserAge());
}
}
public class User {
private int userAge = 0;
public void promptUserAge() {
String userInput = AppUtils.promptUserInput("Enter Age: ");
userAge = new Integer(userInput);
}
public int getUserAge(){
return userAge;
}
public void printUserAge(int age){
System.out.print("\nYou're " + age + " years of age.");
}
}
public class AppUtils {
public static String promptUserInput(String message) {
Scanner input = new Scanner(System.in);
System.out.println(message);
String userInput = input.next();
return userInput;
}
}
这不仅仅是关于有代码来完成这项工作,还涉及到设计。我建议采用以下方法,其特点是:
- 一个实用程序类和一个通用方法
,用于提示用户输入并传递消息promptUserInput
- 它将返回一个字符串对象,并根据需要将其转换为其他对象
- 如果您想从其他方法/类访问它,则将其存储为实例变量,否则只需将其用于打印或任何您的计划
public class UserTest {
public static void main(String[] args) {
User user = new User();
user.promptUserAge();
user.printUserAge(user.getUserAge());
//DO something.
user.printUserAge(user.getUserAge());
user.promptUserAge();
user.printUserAge(user.getUserAge());
}
}
public class User {
private int userAge = 0;
public void promptUserAge() {
String userInput = AppUtils.promptUserInput("Enter Age: ");
userAge = new Integer(userInput);
}
public int getUserAge(){
return userAge;
}
public void printUserAge(int age){
System.out.print("\nYou're " + age + " years of age.");
}
}
public class AppUtils {
public static String promptUserInput(String message) {
Scanner input = new Scanner(System.in);
System.out.println(message);
String userInput = input.next();
return userInput;
}
}
如果您想返回用户输入,而不是再次询问用户,则需要将用户输入存储在变量中。您能举个例子吗?您有什么困难?@Baleroc在我这样做之前,我可以问一下您想要实现什么吗?例如,如果您希望创建一个
Person
类,例如使用名称和年龄,则有相同的方法来解决该问题,但如果您只希望使用一个方法,而不必连接到模型类,则还有其他方法可以实现。那么,你能解释一下你的目标是什么吗?以下是步骤:(1)要求用户输入年龄(2)调用getAge()方法允许用户输入年龄(3)一旦年龄有了输入,我希望能够调用该方法返回年龄的值。(4) 能够调用getAge()返回人的年龄值。如果希望返回用户输入,而不是再次询问用户,则需要将用户输入存储在一个变量中。您能举个例子吗?您有什么困难?@Baleroc在我这样做之前,我可以问一下您想要实现什么吗?例如,如果您希望创建一个Person
类,例如使用名称和年龄,则有相同的方法来解决该问题,但如果您只希望使用一个方法,而不必连接到模型类,则还有其他方法可以实现。那么,你能解释一下你的目标是什么吗?以下是步骤:(1)要求用户输入年龄(2)调用getAge()方法允许用户输入年龄(3)一旦年龄有了输入,我希望能够调用该方法返回年龄的值。(4) 能够调用getAge()来返回人的年龄值。此外,OP的getAge()
和您的getAge()
之间没有区别,这是正确的。Number是我在getAge中添加的一个随机变量名,以防止混淆,但实际上它是同一个概念。我将感谢任何适用的投票。此外,OP的getAge()
和您的getAge()
之间没有区别,这是正确的。Number是我在getAge中添加的一个随机变量名,以防止混淆,但实际上它是同一个概念。我将感谢任何适用的投票。因为这段代码应该在程序员喜欢获得用户输入的任何地方使用:请自己尝试。。。调用你的方法两次,看看会发生什么。@hagrawal我不知道如何正确地应用它,原因如下:我想要一个方法打印出用户作为输入输入输入的数字。我