2016-11-15 18 views
3

2つの異なるクラスに2つのメソッドがあります。私は彼らに同じ入力行を読んで、異なるものをチェックしてほしい。2つの異なるメソッドで同じ入力を2回読み取る

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) 

起こっていただきました!私は理解しますが、私は別の方法を考えることはできません。 私は同じスキャナを使用しようとしましたが、異なる文字列を使用しましたが、それでも動作しませんでした。 両方のメソッドが最初の入力行を読み込み、2回すべて入力する必要がないようにするにはどうすればよいですか?ありがとう!

+3

'main'の入力を読み込んだ後、文字列をパラメータとして' PleaseAndThankYous'と 'Intructions' –

答えて

2

は、今あなたがこのような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... 

は、その後、あなたの主な方法であなたがそれらを読みたい入力を渡すと、その代わりに:

method1(); 
method2(); 

用途:

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

基本的に、同じ文字列をスキャナから複数回取得することは、実際にはサポートされていません。しかし、値を一度取得してから引数として渡すことで、さまざまな場所で複数回使用することができます。

これは他の点でも優れています。これは、スキャナを宣言して一度だけ読み込むためパフォーマンスが向上し、コードをモジュール化しやすくなります。入力と別のクラスを扱うクラスがありますそれを処理するために、複数の場所で両方を行う代わりに。

+0

omg、geniusに渡します。ありがとう!私は今、最もクールなプログラムを持っています:) – DJmendy

+0

@DJmendyは喜んでお手伝いします! – nhouser9

関連する問題