Java如何将数组值从一个方法传递到另一个方法

时间:2012-08-20 12:52:41

标签: java arrays methods

正如问题的标题所示,我想知道如何在方法之间共享数组值。我的主要目标是这个。我有一个方法,用户输入存储在一个数组中,然后这个方法将基本上检查用户输入值(验证过程) 说这样的话 (请忽略语法)

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方法中我有一个显示菜单,为用户提供验证或搜索的选项,因此当用户选择搜索时,我不知道如何从中获取数组值(如果有)验证方法。

3 个答案:

答案 0 :(得分:0)

我宁愿将String[] acnumbAry放在类的成员列表中,并使用构造函数初始化它。

在函数调用期间复制数组只会妨碍性能。

答案 1 :(得分:0)

您可以在方法中返回数组:

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

  // your validation code

  return accnumbers;
}

但是,让我建议您对代码进行一些更改:

  • 您可以在验证数组之前填充数组,然后将其传递给validation方法。我也建议您将其称为validate而不是bool validate(String[] values)。这对我来说会更直观,因为验证和接收数据通常是两件不同的事情。当 Anon 写入时,您可以将accnumbers存储在实例字段中。
  • 当您在样本中使用contains时,您最好使用Set而不是数组或List,因为搜索设置通常会更快。

答案 2 :(得分:0)

不要使用数组!!! Java不是C!

除非您编写一些需要超快的低级代码,否则请使用Collections API。如果这是家庭作业(我怀疑它是)并且你的教授告诉你使用阵列,要求教师院长立即将他从教学中删除,然后再造成更多伤害!对于几乎所有情况,数组都是一个糟糕的选择。

在这种情况下,请使用List,其大小会自动增大。无需检查大小等。然后从您的方法返回列表。您的代码将缩小为:

public List<String> validation() {
    List<String> accnumbers = new ArrayList<String>();
    Scanner sc = new Scanner(System.in);

    System.out.print("Enter account numbers (blank to finish):");
    while (true) {
        String accno = sc.nextLine(); 
        if (accno.equals("")) { // blank ends input
            return accnumbers;
        }
        accnumbers.add(accno); // will take any number of account numbers
    }
}

您甚至不需要search方法,只需使用list.contains()