正如问题的标题所示,我想知道如何在方法之间共享数组值。我的主要目标是这个。我有一个方法,用户输入存储在一个数组中,然后这个方法将基本上检查用户输入值(验证过程) 说这样的话 (请忽略语法)
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方法中我有一个显示菜单,为用户提供验证或搜索的选项,因此当用户选择搜索时,我不知道如何从中获取数组值(如果有)验证方法。
答案 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()
。