当前位置: 首页 > 知识库问答 >
问题:

用两种不同的方法读取相同的输入两次

翁和正
2023-03-14

我有两个不同的方法,在两个不同的类中。我希望他们都能阅读同一行输入,并检查不同的内容。一个查找“给我冲杯咖啡”之类的说明,另一个查找不同的关键字,如“请”和“谢谢”(这些影响程序对我的反应):

public class Class1(){

public void PleaseAndThankYous(){
Scanner scanner1 = new Scanner(System.in)
input1 = Scanner1.nextLine();

if (input1.contains//blah blah blah blah...


public class Intructions(){

public void Method2(){
Scanner scanner2 = new Scanner(System.in)
input2 = Scanner2.nextLine();

if (input1.contains//blah blah blah blah...

然后我在我的主字符串中调用它们,只是为了测试它们:

System.out.println("this is a test, ask me something")
obj.PleaseAndThankYous();
obj.Intructions();

我的控制台显示如下:

this is a test, ask me something  //(out put string)
make me a coffee please         //PleaseAndThankYous() reads this
make me a coffee please         // Intructions() reads this;
Making you a coffee, Sir.   // (response)

我知道发生了什么,但我想不出其他办法。我也尝试过使用同一个扫描仪,不同的字符串,但仍然不起作用。我怎样才能使这两种方法都能读取我的第一行输入,而不必键入所有内容两次?谢谢

共有1个答案

张丁雷
2023-03-14

现在你有这样两种方法:

public void method() {
    Scanner scanner = new Scanner(System.in)
    input = Scanner.nextLine();

    if (input.contains //blah blah blah blah...

把他们两个都改一下,这样他们就可以辩论了:

public void method(String input) {        
    if (input.contains //blah blah blah blah...

然后在main方法中传递您希望他们读取的输入,因此,不要:

method1();
method2();

使用:

Scanner in = new Scanner(System.in);
String input = Scanner.nextLine();
method1(input);
method2(input);

基本上,不支持从扫描仪多次获取相同的字符串。但通过将其作为参数传递,您可以很容易地获得一次值,然后在不同的位置多次使用它。

这在其他几个方面也更好——它将提高性能(因为您只声明一个扫描仪并从中读取一次)并且它使您的代码更加模块化,因为您可以有一个处理输入的类和另一个处理输入的类,而不是在多个地方同时进行。

 类似资料:
  • 我在Java中有两个几乎相同的方法。唯一的区别是它们有不同的参数类型。它们使用泛型并返回输入参数的类型T。我怎样才能摆脱重复的代码?下面是我的两个方法。最后,它们都使用不同的类型调用Spring。否则,方法是相同的。

  • 我想采取两个字符串和交替的字符到一个新的字符串使用for方法。 例如:“两个”和“一个” 结果:“townoe” 这就是我到目前为止所拥有的,我真的不知道如何完成它。

  • 我改变了切入点的顺序,它总是排在第二位。关于如何解决这个问题有什么想法吗? 更新 一旦我发布了这个问题,我就有了一个想法。我这样更改了切入点: 现在异常消失了,但仍然有一个小问题(我想这个问题更容易解决):因为ArrayList实现了可序列化,所以至少在我使用ArrayList的测试用例中,两个切入点都被执行了。 我将对此进行研究,并发布我的发现,但也感谢您的帮助;) 我将代码改为只使用一个切入点

  • 我有以下代码,但它不起作用:出现。 我还有这个代码: 这是可行的。在第一种情况下,是,就像在第二种情况下是。那么为什么第一种情况会导致错误,而第二种情况会成功编译? 编辑:我应该怎么做才能实现方法重载,而不引发错误?

  • 本文向大家介绍获取用键盘输入常用的两种方法?相关面试题,主要包含被问及获取用键盘输入常用的两种方法?时的应答技巧和注意事项,需要的朋友参考一下 方法1:通过 Scanner 方法2:通过 BufferedReader

  • 问题内容: 我有一个类似下面的查询。 当我提交如下所示的日期时,它不返回任何内容,但是如果输入,则返回一个值。 我想如果我只输入两个相同的日期而不输入时间,那么时间将会是。 当我们输入两个相同的日期而不输入时间时,如何阅读? 表格中的日期格式按以下方式填充,但是,例如,如果我们仅输入日期,则可以读取该日期格式。 您的帮助对我很重要,谢谢 问题答案: 如果您的数据类型是,则可以添加: 因为= 如果您