在Java中,将Scanner
集成到继承类中通常意味着你想要在子类中使用Scanner
对象来读取用户输入。以下是如何实现这一点的步骤:
java.util.Scanner
是一个简单的文本扫描器,可以解析基本类型和字符串。Scanner
类的使用。假设我们有一个基类BaseClass
,它包含一个Scanner
对象,然后我们创建一个继承自BaseClass
的子类DerivedClass
。
import java.util.Scanner;
// 基类
class BaseClass {
protected Scanner scanner; // 使用protected以便子类可以访问
public BaseClass() {
this.scanner = new Scanner(System.in);
}
// 提供一个方法来读取用户输入
protected String getInput(String prompt) {
System.out.print(prompt);
return scanner.nextLine();
}
}
// 子类
class DerivedClass extends BaseClass {
public void askForName() {
String name = getInput("Please enter your name: ");
System.out.println("Hello, " + name + "!");
}
public void askForAge() {
int age = Integer.parseInt(getInput("Please enter your age: "));
System.out.println("You are " + age + " years old.");
}
}
// 主类
public class Main {
public static void main(String[] args) {
DerivedClass derived = new DerivedClass();
derived.askForName();
derived.askForAge();
}
}
Scanner
对象可能导致资源泄露。BaseClass
的finalize
方法中关闭Scanner
,或者使用try-with-resources语句。@Override
protected void finalize() throws Throwable {
try {
if (scanner != null) {
scanner.close();
}
} finally {
super.finalize();
}
}
try-catch
块来捕获并处理这些异常。public void askForAge() {
try {
int age = Integer.parseInt(getInput("Please enter your age: "));
System.out.println("You are " + age + " years old.");
} catch (NumberFormatException e) {
System.out.println("Invalid input. Please enter a valid number.");
}
}
通过这种方式,你可以有效地在Java中将Scanner
集成到继承类中,并处理可能出现的常见问题。
领取专属 10元无门槛券
手把手带您无忧上云