【问题标题】:Java invoking a method with array parameterJava调用带有数组参数的方法
【发布时间】:2013-07-17 02:56:38
【问题描述】:

我写了以下函数:

public void enterlessonnames(String[] names)
        {
            String msg="";

            for (int i=0;i<names.length;i++)
            {

                msg=msg+names[i];
            }

            System.out.println(msg);
 }

我想这样打电话,给出输入:

enterlessonnames({"math","art"} );

如何在 main 中调用它?

enterlessonnames(names[{"math","art"} ]);

它们都没有。

Multiple markers at this line:

- Syntax error, insert ")" to complete MethodInvocation
- Syntax error on token ",", delete this token
- Syntax error, insert ";" to complete Statement
- Syntax error on tokens, delete these tokens

【问题讨论】:

  • 您进一步询问以下代码行:enterlessonnames(isimler[{"math","art"} ]); 您希望在这里发生什么?能否提供isimler方法的代码?
  • 对不起,它的名字不是 isimler。
  • 最佳答案真的有@NickJ

标签: java arrays parameters call invoke


【解决方案1】:

像这样:

enterlessonnames( new String[] { "a", "b" } );

仅供参考,java命名约定意味着方法名称的名称中每个单词的第一个字母都以大写字母开头,但第一个单词以非大写开头除外。在您的情况下:enterLessonNames

【讨论】:

    【解决方案2】:

    称它为:

    public class ArrayCaller{
        public static void main(final String[] args) {
            new ArrayCaller().enterlessonnames(new String[]{"lesson1", "lesson2", "lesson3"});
        }
    
        public void  enterlessonnames(String[] names) {
            String msg="";
    
            for (int i=0;i<names.length;i++) {
                msg=msg+names[i];
            }
            System.out.println(msg);
        }
    }
    

    干杯!!

    【讨论】:

      【解决方案3】:

      你需要创建一个合适的字符串数组实例,像这样:

      String[] array = new String[]{"math", "art"};
      

      您的固定电话是:

      enterlessonnames( new String[]{"math", "art"} );
      

      String[] lessons = new String[]{"math", "art"};
      enterlessonnames(lessons);
      

      【讨论】:

      • enterlessonnames(new String[]{"math", "art"});我只能用那个打电话,我需要另一个数组吗?
      • 查看我上面的评论/问题
      • 数组names是方法enterlessonnames的参数,只能在方法的代码中使用。如果您正在调用该方法,则可以执行我的答案中显示的任何一种方法。对于第二种方法,在调用方法的范围内定义(并初始化)一个新数组 (lessons)。我推荐这个关于数组主题的介绍:docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html 和这个关于方法调用的介绍:docs.oracle.com/javase/tutorial/java/javaOO/arguments.html
      【解决方案4】:

      除了其他答案之外,您还可以像这样声明您的方法:

      public void  enterlessonnames(String... names) {
        //do stuff
      }
      

      那么可以这样调用:

      enterlessonnames( new String[] { "a", "b" } );
      

      或者像这样:

      enterlessonnames("just one string!");
      

      或者像这样:

      enterlessonnames("one string", "another string");  //as many strings as you like
      

      【讨论】:

        【解决方案5】:

        您正在寻找的可能是这样的调用:

        enterlessonnames(new String[] {"CursedChico","Science","Maths"});
        

        请记住,新创建的数组将被释放,并且无法在其他方法中重复使用。

        如果你没有强制执行,我可以建议你使用泛型,比如;

        List<String> names= new ArrayList<String>();
        names.add("Math");
        names.add("Science");
        

        等等。

        你可以修改你的方法为;

        public void enterLessonNames(List<String> names)    
        {
           Here goes your code;
        }
        

        之后调用;

        enterLessonNames(names);
        

        希望对你有帮助。

        【讨论】:

          猜你喜欢
          • 2013-12-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-03
          • 2011-11-30
          • 2018-10-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多