Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以对象数组为参数调用方法_Java_Arrays_Oop_Object - Fatal编程技术网

Java 以对象数组为参数调用方法

Java 以对象数组为参数调用方法,java,arrays,oop,object,Java,Arrays,Oop,Object,您好,我在运行我的方法bugScan时遇到了问题,我想这是因为我已经将myBugs声明为一个对象数组。如果有人能给我任何提示或给我指出正确的解决方向,我将非常感激:以下是所有合适的课程: package mainFuncs; import java.util.Scanner; public class aBug { String species, name; int x, y, energy, id, foodpref; char symbol; public void bugScan(

您好,我在运行我的方法bugScan时遇到了问题,我想这是因为我已经将myBugs声明为一个对象数组。如果有人能给我任何提示或给我指出正确的解决方向,我将非常感激:以下是所有合适的课程:

package mainFuncs;

import java.util.Scanner;

public class aBug {

String species, name;
int x, y, energy, id, foodpref;
char symbol;

public void bugScan(aBug[] bugObjects, Scanner scan) {

    String inSpecies, inName;
    int inX, inY, inEnergy, inId;

    for(int i = 0; i < bugObjects.length; i++)
        {
            System.out.print("Species: ");
            inSpecies = scan.nextLine();

            System.out.print("Name: ");
            inName = scan.nextLine();

            System.out.print("X position: ");
            inX = scan.nextInt();

            System.out.print("Y position: ");
            inY = scan.nextInt();

            System.out.print("Energy: ");
            inEnergy = scan.nextInt();

            System.out.print("ID: ");
            inId = scan.nextInt();

            bugObjects[i].symbol = '*';
            bugObjects[i].species = inSpecies;
            bugObjects[i].name = inName;
            bugObjects[i].x = inX;
            bugObjects[i].y = inY;
            bugObjects[i].energy = inEnergy;
            bugObjects[i].id = inId;
        }
}
}
我的问题发生在以下行: myBugs.bugScanmyBugs,扫描;
如果出现错误消息无法调用bugScanaBug[],则阵列类型aBug[]上的扫描器将无法接受典型参数aBug。通过自己编写的类,名称应该以驼峰大小写,因此可能出现异常。

问题在于您提到的行!! myBugs是一个数组,没有任何bugScan方法

应该是这样的

 new aScan().bugScan(myBugs, scan);

您在aBug类中定义了该方法,但您试图在aBug对象数组上调用它!无论如何,我认为您可以从第一个类中取出Bugscapm方法,然后将其放在第二个类中

package mainFuncs;

import java.util.Scanner;

public class aBug {

    String species, name;
    int x, y, energy, id, foodpref;
    char symbol;
}
二等舱:

package mainFuncs;

import java.util.Scanner;

public class mainMenu {

    public static void main(String args[]){

        Scanner scan = new Scanner(System.in);
        aBug[] myBugs = new aBug[5];

        bugScan(myBugs, scan);
        System.out.print("hi");
    }

    public static void bugScan(aBug[] bugObjects, Scanner scan) {

        String inSpecies, inName;
        int inX, inY, inEnergy, inId;

        for(int i = 0; i < bugObjects.length; i++)
        {
            System.out.print("Species: ");
            inSpecies = scan.nextLine();

            System.out.print("Name: ");
            inName = scan.nextLine();

            System.out.print("X position: ");
            inX = scan.nextInt();

            System.out.print("Y position: ");
            inY = scan.nextInt();

            System.out.print("Energy: ");
            inEnergy = scan.nextInt();

            System.out.print("ID: ");
            inId = scan.nextInt();

            bugObjects[i].symbol = '*';
            bugObjects[i].species = inSpecies;
            bugObjects[i].name = inName;
            bugObjects[i].x = inX;
            bugObjects[i].y = inY;
            bugObjects[i].energy = inEnergy;
            bugObjects[i].id = inId;
        }
    }
}
myBugs是一个数组,因此您只能对其执行数组操作。您的方法bugScan是在aBug类中定义的。如果要运行它,可以通过执行以下操作来解决:

Bug tmp = new aBug();
tmp.bugScan(myBugs, scan);
但这闻起来像是糟糕的编码,aBug类不应该承担“扫描bug”的责任。
另请注意:通过转换,类名以大写字母开头,即使应用修复程序,也会引发NullPointerException,因为您从未初始化数组。

myBugs是一个数组,没有任何方法Bugscan它们都来自同一个包mainFuncs。我从一个更大的程序中获取了这一问题,并将这两个类重写到它们自己的新包mainFuncs中,以尝试找出在编译中不重要的问题。感谢您的帮助:。但这不会导致NPE吗?我不这么认为:如果有,你应该以其他方式修复它!顺便说一句,我刚刚更新了我的答案谢谢!这需要将方法更改为静态方法,但这不是最佳解决方案吗?@EliasMalik,是的。记住永远接受答案。
Bug tmp = new aBug();
tmp.bugScan(myBugs, scan);