Java 如果您使用的对象接受不断变化的参数,如何通过循环获取任意数量的输入?
这是家庭作业,所以我不想发布代码或让别人帮我做。我是一名java入门的学生 我创建了一个解析器类,它基本上验证输入的格式。任务要求我接受任意数量的输入。我选择使用do-while循环来执行此操作。因此,在循环开始之前,我声明了我的变量(包括Parser;)。然后,我继续我的do while并向用户请求一个表达式,将其存储为一个名为句子的字符串,然后将解析器初始化为parser=newparse(句子)。在main方法的末尾,我询问用户是否希望检查另一个句子,看看它在语法上是否有效 然而,当我第二次迭代时,显然我不能将其初始化为=new解析,因为第二次它不是新的!但是我不能在do while循环之前初始化它,因为否则这个句子将是空的。解析器是以伪代码的形式提供给我的,我无法更改它的功能Java 如果您使用的对象接受不断变化的参数,如何通过循环获取任意数量的输入?,java,loops,parsing,object,arguments,Java,Loops,Parsing,Object,Arguments,这是家庭作业,所以我不想发布代码或让别人帮我做。我是一名java入门的学生 我创建了一个解析器类,它基本上验证输入的格式。任务要求我接受任意数量的输入。我选择使用do-while循环来执行此操作。因此,在循环开始之前,我声明了我的变量(包括Parser;)。然后,我继续我的do while并向用户请求一个表达式,将其存储为一个名为句子的字符串,然后将解析器初始化为parser=newparse(句子)。在main方法的末尾,我询问用户是否希望检查另一个句子,看看它在语法上是否有效 然而,当我第二
谢谢你的帮助 您在这里有一些选择,根据您的任务要求,您将决定哪一个是最好的 在循环前声明,在循环内赋值。 从事物的声音来看,这可能是你的老师想要你做的
Parser parser;
while (...) { //Your read logic
parser = new Parser(sentence);
parser.parse();
}
您基本上设置了一个变量,该变量将保存对解析器
实例的引用。在循环的每次迭代中,您都会创建一个Parser
的新实例,并将其引用分配给Parser
变量。现在,当您取消引用解析器
变量时,它将查找其持有引用的实例。
是Java中用于对象的解引用操作符
在循环外初始化,并在循环内调用方法。为了防止在循环的每次迭代中创建对象,可以在循环外初始化解析器的单个实例。然后,您可以简单地将您的句子输入到parse
方法
Parser parser = new Parser();
while (...) {
parser.parse(sentence);
}
如果您的解析器
类维护状态——换句话说,在parse
方法期间分配类成员变量值——那么这可能不是最佳选择。虽然它仍然适用于所呈现的场景,但如果您有一个需要进行并发或异步处理的场景,则可能会遇到问题
我想你的任务可能是想让你走第一条路。您的老师可能希望将解析的结果状态存储在解析器
类中。这些数据随后将被引用
我个人认为这是错误的,我想很多软件工程师都会同意。我可能会让parse方法返回表示解析结果的POJO(纯旧Java对象)。如果它除了解析之外还将解析结果存储为对象的成员(因此,Parser
也是ParsedObject
),那么它可能被认为违反了单一责任原则。解析器类是以伪代码的形式提供给我的。我们得到一个语言语法,必须验证语法定义的语言中是否存在输入。对象接受一个句子,然后调用parse()检查它。但我想我会改变这一点,我真的不在乎她是否因为偏离准则而扣了几分。请在尝试问更多问题之前阅读。