提问人:SSH 提问时间:12/31/2022 最后编辑:dan1stSSH 更新时间:1/1/2023 访问量:136
如何在一个应用程序中处理 Java 中的多个输入
How to handle multiple inputs in Java in one application
问:
也许我的标题不是很清楚,但我试图理解这个问题。
问题:我有很多任务,不同的人用自己的方式解决它们。他们可能需要用户的输入来处理它并做他们想做的事,我想单独运行他们的解决方案,以及在一个一次性运行所有解决方案的框架中。以下是我设计为框架的整体简单方法。
但是,正如这段代码直接向我展示的那样,我将得到(使用)(使用)方法。NoSuchElementException
Scanner
StreamClosed
BufferedReader
我怎样才能做到这一点,或者我的想法非常错误或遗漏了任何核心概念?
我不想要一个 in main 并将其实例传递给我的所有代码,(这是我唯一可以解决的方法)scanner
public class AssignmentRunner {
public static void main(String[] args) {
AssignmentRunner runner = new AssignmentRunner();
AssignmentExecutor executor = new AssignmentExecutor();
executor.execute();
}
}
public interface Assignment {
void execute();
}
class AssignmentExecutor {
public List<Assignment> assignmentList ;
private void addAssignments(){
assignmentList = new ArrayList<Assignment>();
assignmentList.add(new Assignment1());
assignmentList.add(new Assignment2());
}
public void execute() {
addAssignments();
for (Assignment assigment : assignmentList) {
assigment.execute();
}
}
}
public class Assignment1 implements Assignment {
String inputString;
@Override
public void execute() {
input();
System.out.println(inputString);
}
private void input() {
Scanner scanner = new Scanner(System.in);
try {
inputString = scanner.nextLine();
}
catch (Exception e) {
System.err.println(e.getMessage());
}
finally {
scanner.close();
}
}
}
public class Assignment2 implements Assignment {
String inputString;
@Override
public void execute() {
input();
System.out.println("Hello"+inputString);
}
private void input() {
Scanner scanner = new Scanner(System.in);
try {
inputString = scanner.nextLine();
}
catch (Exception e) {
System.err.println(e.getMessage());
}
finally {
scanner.close();
}
}
}
编辑:根据一些评论和一个答案,我做了一些修改,请帮助我了解这是我们唯一能做的最好的事情,或者是设计我需求的任何其他方式。
需要例如,不同的学生可以有不同的作业(有些可能需要输入,有些可能不需要任何输入)
- 只需打印 Hello World
- 输入字符串并显示字数统计
- 输入数字显示阶乘
- 输入编号 打印其表格
我们希望单独执行每个赋值类,以及从一个 Runner 类执行,如上所示。
修改我对所有类进行了这些修改,显示了理解我所做的事情的示例。
class AssignmentExecutor {
public List<Assignment> assignmentList ;
private void addAssignments(){
assignmentList = new ArrayList<Assignment>();
assignmentList.add(new Assignment1());
assignmentList.add(new Assignment2());
}
public void execute() {
Scanner scanner = new Scanner(System.in);
addAssignments();
for (Assignment assigment : assignmentList) {
assigment.execute(scanner);
}
scanner.close();
}
}
public class Assignment1 implements Assignment {
String inputString;
public static void main(String args[]) {
Assignment1 assignment1 =new Assignment1();
Scanner scanner = new Scanner(System.in);
assignment1.execute(scanner);
scanner.close();
}
@Override
public void execute(scanner) {
input(scanner);
System.out.println(inputString);
}
private void input(scanner) {
scanner = new Scanner(System.in);
try {
inputString = scanner.nextLine();
}
catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
答: 暂无答案
评论
finally
input
Assignment1
Assignment2