【问题标题】:Multiple values for a single parameter单个参数的多个值
【发布时间】:2017-06-16 10:50:39
【问题描述】:

如何将多个值传递给 java 中特定方法的单个参数。 例如假设我有一个带有单个参数“childname”的方法,它可以获取一个家庭中所有孩子的名字。 现在如何将多个值传递给此参数以获取所有不同的名称。

public String getChildrenNames(String childname)
{
    children= childname+ familyName;
    return children;
}

【问题讨论】:

  • 可以不改方法接受两个参数吗??

标签: java parameter-passing


【解决方案1】:

您通常会使用数组或集合来实现这一点。 例如:

public String[] getNamesOfChildren()

public Collection<String> getNamesOfChildren()

【讨论】:

    【解决方案2】:

    正如人们所说你需要将它们作为数组传递,所以你的代码应该是这样的:

    String familyName = "Family";
    
    public String[] getChildrenNames(String[] childnames)
    {
        String[] result = new String[childnames.length];
        for(int i=0; i<childnames.length; i++)
        {
            result[i] = childnames[i] + " " +familyName;
        }
        return result;
    }
    
    public void main()
    {
        String[] childnames = {"Name1", "Name2", "Name3"};
        String[] childnamesAux = getChildrenNames(childnames);
    }
    

    有了这个,你的 childnamesAux 变量应该有:{"Name1 Family", "Name2 Family", "Name3 Family"}

    【讨论】:

      【解决方案3】:

      如果您无法更改方法的签名,则可以使用连接,然后在您的方法中您可以拆分此参数,例如:

      String childname = firstname + "," + lastname;
      getChildrenNames(childname);
      

      因此您可以拆分此参数以获得多个名称,

      String[] spl = childname.split(",");
      

      但是还有更好的方法,如果你可以更改方法的签名,那么你可以创建一个可以取一个数组或名称列表的方法:

      public String getChildrenNames(String...childnames) {
      

      public String getChildrenNames(Lis<String> childnames) {
      

      你甚至可以创建一个对象,例如:

      class Person{
          private String firstname;
          private String lastname;
          //getters and setters
      }
      

      那么你的方法应该接受一个数组或 Person 对象列表:

      public String getChildrenNames(List<Person> childname) {
      

      【讨论】:

        【解决方案4】:

        你可以试试这个

           public static String child(String... name){
            String[] array=name;
            String tem;
            if(name.length==1)
                return name[0];
            for(int counter=0; counter<array.length;counter+=2){
                array[0]=name[counter]+name[counter+1];
            }
            tem=array[0];
        
            return tem;
        }
        

        现在如果你叫它

            child("Paul","walker");
        

        输出将是 保罗沃克 希望这会有所帮助

        【讨论】:

          【解决方案5】:

          你可以像下面这样使用 var args

          public String getChildrenNames(String... childname)
          {
              for(String s:childname)
              {
                  children= childname+ s;
              }
              return children;
          }
          

          例子

          public class Test {
              public static void main(String[] args) {
                  System.out.println(tes("s","d","s"));
              }
          
              static String tes(String... x)
              {
                  String y="";
                  for(String s:x)
                  {
                      y=y+s;
                  }
                  return y;
              }
          }
          

          输出: sds

          【讨论】:

          • 这显然行不通,缩进也可以更好。
          • 为什么你认为应该将s附加到数组childname
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-10-12
          • 1970-01-01
          • 2013-12-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多