我创建了一个从用户那里获取输入的方法。但是,我的问题是当我尝试返回方法的值时,它会不断要求输入一个新数字。相反,我希望它只要求一个数字,然后返回它。
例如:以下代码说明了我想要在没有方法的情况下实现的目标,但在方法中包含它会导致困难:
主要工作代码:
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());它每次都要求一个数字。为什么第一个代码允许我在不要求新号码的情况下打印年龄,但调用打印数字的方法会导致问题并继续要求新号码。
实际上,我只想调用该方法,要求输入一次数字,然后调用该方法返回用户输入的数字。
答案 0 :(得分:3)
它不仅仅是有代码来做工作,还有设计。我建议下面的方法,功能是:
promptUserInput
,用于提示用户输入,传递消息完成所有操作后,您可以处理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;
}
}
答案 1 :(得分:1)
您可以将用户输入存储在类成员变量中,稍后再重复使用。
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;
}
}
答案 2 :(得分:1)
您的问题是,每次拨打getAge()
时,都会创建一个新扫描程序,并尝试再次输入。相反,当您第一次从getAge()
返回数字时,请将值保存在可以重复使用的变量中。
这样的事情:
int age = getAge();
System.out.print("your age is " + age + " years of age");