【问题标题】:Passing an array of objects to a method in java将对象数组传递给java中的方法
【发布时间】:2015-02-16 12:02:04
【问题描述】:

大家好,我有一个问题。尝试将对象数组传递给方法时出现错误 我的课

public class Object {
     private int x1;

    public Object(int a ,){
            this.x1=a;
     }

public class staticMethods{
    public static void findMaxPos(Object[] name){
             max = name[0]
             pos = 0
            for( int i=1; i<name.length ; i++){
                 if ( name[i] >max ){
                     max = name[i];
                     pos = i;
                     }
              }
      }
public class Example{

public static void main(String[] args) {
Object[] yp = new Object2[3];
    yp[0] = new Object(5);
    yp[1] = new Object(6);
    yp[2] = new Object(8); 
 findMaxPos(type)// i get an error of the  method findMaxPos is undefined for the type Example
   }

很抱歉这么长的帖子...

【问题讨论】:

  • 你需要做staticMethods.findMaxPos
  • 这些类在同一个文件夹中的不同文件中,我忘了提及它
  • 好吧,开始你的代码甚至没有编译,例如public Object(int a ,) 是不完整的。此外,拥有一个名为 Object 的类可能是一个非常糟糕的主意,因为它也是 Java 类层次结构根部的类的名称。阅读代码时可能会变得非常混乱。
  • 是的,伙计,对不起,我刚刚输入的速度非常快,它不是我的实际代码,我只编译它的逻辑......我需要输入 staticMethods.findMaxPos 作为 NG。声明..谢谢大家..将不得不对静态方法进行修订! :)

标签: java arrays object methods arguments


【解决方案1】:

findMaxPos 是您的类 staticMethod 的静态方法。

当你不在定义它的类内部调用静态函数时,你需要用之前的类名来调用它:

public static void main(String[] args) {
    Object[] type = new Object2[3];
    yp[0] = new Object(5);
    yp[1] = new Object(6);
    yp[2] = new Object(8); 
    staticMethods.findMaxPos(type);// This should be ok.
}

请注意,在 java 中,约定是给类一个以大写字母开头的名称(以小写字母开头的名称被赋予实例)。

【讨论】:

  • 非常感谢我的朋友。所以对于每个静态方法,我需要先输入它们所在的类对吗?
  • @InFamouStarlight 仅当您从另一个类调用该函数时。
  • 您可以避免使用静态导入在方法名称前加上类名前缀:import static staticMethods.findMaxPos;import static staticMethods.*。然后你可以在你的代码中使用它作为findMaxPos(type)。这仅从 Java 6 开始可用。
【解决方案2】:

嗯,上面的解决方案应该可以工作,但除此之外,还有一些其他的事情需要考虑。

  1. public Object(int a,) 构造函数不完整。
  2. max = name[0], pos = 0 中缺少分号(;)
  3. 最重要的是 max 和 Pos 的返回类型是未定义的。 POs 可以是 int,但变量 max 应该是 Object 类型。
  4. 如果 max 的返回类型是对象,则不能使用 (name[i] >max ),因为它对于对象类型是未定义的。 纠正这些错误,希望您的代码能够正常运行。

【讨论】:

    猜你喜欢
    • 2018-08-19
    • 2019-03-22
    • 2012-01-20
    • 2016-01-14
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    相关资源
    最近更新 更多