2

質問のタイトルが示すように、メソッド間で配列値を共有する方法を知りたいです。私の主な目的はこれです。ユーザー入力が配列に格納されるメソッドがあり、このメソッドは基本的にユーザー入力値をチェックします (検証プロセス) このようなことを言います (構文を無視してください)

public void validation()
{
 String[] accnumbers = new String[20];
  Scanner sc = new Scanner(System.in);

  System.out.print("Enter the account number:");
    accno = sc.nextLine(); 

int j;
      for (j = 0; j < accnumber.length; j++)
      if (accnumber[j] == null) break;
      if (j==accnumber.length)  
      {
            System.out.print("limited.");
      } 
      else
      { 
          accnumber[j]=accno;               
      }

}

// これは vaidation 部分のためのものであり、accnumbers 配列があることがわかるように、次のメソッドでそれを共有したいと思います。これは基本的に、文字列で有効な accnumber を検索します

public void search(String[] acnumbAry,BigDecimal[] acbalanceArray,String accnumbinput)
{
 if(Arrays.asList(acnumbAry).contains(accnumbinput))
       {
           System.out.println("The value is contained");
       }
       else
       {
           System.out.println("The value is not contained");
       }

}

// しかし Main メソッドには、検証または検索のオプションをユーザーに提供する表示メニューがあるため、ユーザーが検索を選択した場合、検証メソッドから配列値 (存在する場合) を取得する方法がわかりません.

4

3 に答える 3

0

String[] acnumbAryクラスのメンバーリストにドロップして、コンストラクターで初期化したほうがよかったでしょう。

関数呼び出し中に配列をコピーすると、パフォーマンスが低下するだけです。

于 2012-08-20T12:59:25.740 に答える
0

メソッドで配列を返すことができます。

public String[] validation()
{
  String[] accnumbers = new String[20];

  // your validation code

  return accnumbers;
}

ただし、コードにいくつかの変更を提案させてください。

  • 配列を検証してからvalidationメソッドに渡す前に、配列にデータを入力することができます。validateむしろ次のように呼ぶことをお勧めしますbool validate(String[] values)。通常、データの検証と受信は 2 つの異なるものであるため、より直感的に感じるでしょう。アノンが書いているようaccnumbersに、インスタンス フィールドに格納できます。
  • サンプルで作業しているときは、配列または の代わりにcontainsa を使用した方がよい場合があります。これは、セットの検索が通常より高速であるためです。SetList
于 2012-08-20T12:59:43.273 に答える