2016-10-21 3 views
-1

私はこの特定の苦境の中に閉じ込められています。私は喜んで提案を受け入れます。だからここにあります:同じ方法を繰り返し、1つのパラメータの新しい値を使用

私は現在、特定の変数がメソッドの先頭部分に特定の値が割り当てられているメソッドで作業しています。メソッドの進行中、その変数は基本的に結果コードを返す外部コンポーネントによってパラメータとして使用されます。これらの結果コードの1つでは、前述の変数の値を変更し、新しい値を使用してプロセス全体を繰り返す必要があります。次のような概念があるが、私はそれをできるだけ多くの簡略化されています:

public void myMethod (String args[]) { 
    String server; 

    server = "some value"; 

    switch (someExternalOperation(server)) { 
    case 1: 
     //process.... 
     break; 
    case 2: 
     server = "new value"; 
     //repeat myMethod using new value of server String variable 
     break; 
    } 
} 

public int someExternalOperation (String str) { 
    //after several operation 
    return 1; //example purposes 
} 

ちなみに、私は後藤と他の代替のようなものをチェックして研究しています。私はいくつかの結果を見過ごしたかもしれないし、ここで尋ね終わった。どんな助けでも大歓迎です。ありがとうございました。

+0

あなたの問題は何ですか?何がうまくいかない?しかし、 'myMethod'にパラメータとして' server'を渡したいと思うようです。 – Nikem

答えて

3

一つの簡単なオプションがserverパラメータを取って、民間の過負荷を持つことである - あなたは再帰的に呼び出すことができます。

public void myMethod(String args[]) { 
    myMethod(args, "some value"); 
} 

private void myMethod(String[] args, String server) { 
    switch (someExternalOperation(server)) { 
     case 1: 
      // process.... 
      break; 
     case 2: 
      myMethod(args, "new value"); 
      break; 
    } 
} 

あなたはもちろん、それは無限に再帰するつもりはないことを確認する必要があります。

別のオプションは、ちょうどあなたのメソッド内のループを持っているだろう:

public void myMethod (String args[]) { 
    String server = "some value"; 

    while (true) { // Or ideally a different condition... 
     switch (someExternalOperation(server)) { 
      case 1: 
       // process.... 
       // Done! Exit the method... 
       return; 
      case 2: 
       server = "new value"; 
       // We'll now continue to the next iteration of the loop 
       break; 
      default: 
       // ? 
     } 
    } 
} 
+0

私は再帰を考えましたが、実際のコードは長すぎます。この場合は効率的ではありません。とにかく助けてくれてありがとう。私たちはすでにこの問題に対処する方法を考え出しました。どうもありがとう。 – Uzi

+1

@Uzi:コードの長さがどのように再帰が実行可能かどうかは関係ありません...しかし、ループの場合は常にそうです。将来の質問をするときに、時間を浪費することを避けるために、関連するすべての情報(およびあなたがすでに試したこと)を含めてください。 –

0

は、私が代わりに対処する方法を考え出しました。みんな読書に感謝します。私は単純に外部操作を使用して、ケース2を返すかどうかを確認します。

どうもありがとうございました。

関連する問題