gpt4 book ai didi

java - 在 Main 中创建的输入变量与在 Method 中创建的输入变量的值不同

转载 作者:行者123 更新时间:2023-12-01 16:57:21 24 4
gpt4 key购买 nike

我创建了一个从用户那里获取输入的方法。但是,我的问题是,当我尝试返回该方法的值时,它会不断要求新的数字作为输入。相反,我希望它询问一次号码,然后返回它。

例如:以下代码说明了我想要在不使用方法的情况下实现的目标,但将其包含在方法中会导致困难:

主要内部的工作代码:

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

问题是,每当我尝试 print System.out.print(getAge()); 时它每次都会询问一个号码。为什么第一个代码允许我打印年龄而不要求新号码,但调用打印号码的方法会导致问题并继续要求新号码。

实际上,我只想调用该方法,要求输入一次数字,然后调用该方法返回用户输入的数字。

最佳答案

这不仅仅是关于用代码来完成工作,还关于设计。我推荐以下方法,特点是:

  • 一个实用程序类和一个通用方法promptUserInput,用于提示用户输入并传递消息
  • 它将返回一个String对象,根据需要将其转换为其他对象。
  • 如果您想从其他方法/类访问它,则存储为实例变量,否则只需使用它来打印或执行您的计划。

您可以处理 Scanner 对象以在一切完成后将其关闭,并且父线程已准备好终止,为此您将需要一些更改。

P.S.:我的目的不是简单地提供代码块,而是让你思考如何设计。因此,您可能需要根据您的要求、场景和测试进行一些更改。

代码:

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

关于java - 在 Main 中创建的输入变量与在 Method 中创建的输入变量的值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30922614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com