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

时间:2016-11-15 00:00:36

标签: java input methods

我有两个不同的方法,分为两个不同的类。我希望他们都阅读相同的输入行并检查不同的东西。一个人寻找像#34;让我喝咖啡的指示"另一个寻找不同的关键词,如"请"并且"谢谢你" (这些影响程序如何回应我):

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 个答案:

答案 0 :(得分:2)

现在您有两种方法:

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);

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

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