错误:对于参数类型double,int [],运算符+ =未定义

时间:2014-04-17 18:48:34

标签: java methods error-handling

我正在尝试使用操作符+ =来获取我的程序中的一种方法,该方法获取沙鼠的食物总量,并将其除以沙鼠的数量,类似于平均值。错误如下:

  1. “运算符+ =未定义参数类型double,int []”,代码如下:
    平均值+ = g.getAmountFood();

  2. “对于参数类型,运算符/未定义Gerbil,int”,代码如下:   average = gerbil [i] / gerbil.length

  3. 这是我的第一个主要类的代码: import java.util.Scanner;

    public class Gerbilfood {
    
    static int n8;
    static int n3;
    static String n55;
    static String n35;
    static String n2;
    public static Gerbil[] gerbil;
    
    public static void main(String[] args) {
    
    Scanner scanner = new Scanner(System.in);
    
    System.out.println("Please input how many types of food items the  gerbils  eat as an integer");
    String n0 = scanner.nextLine();
    int n1 = Integer.parseInt(n0);
    
    String[] food = new String[n1];
    
    for (int i = 0; i < n1; i++) {
    
        System.out.println("Please enter a food name");
    
        String n2 = scanner.nextLine();
    
        food[i] = n2;
    
        int[] maximum = new int[n1];
    
        System.out.println("Please enter maximum amount of this food per day");
        String n33 = scanner.nextLine();
        int n3 = Integer.parseInt(n33);
        maximum[i] = n3;
    }
    
    System.out.println("Please enter in the number of gerbils in the lab");
    String n73 = scanner.nextLine();
    int n4 = Integer.parseInt(n73);
    //gerbil = new Gerbil[n4];
    
    gerbil = new Gerbil[n4];
    
    int[] combo = new int[n4];
    String[] ids = new String[n4];
    for (int i = 0; i < n4; i++) {
    
        //Gerbil g = new Gerbil(n1);
        System.out.println("Please enter in the lab id for one of the gerbils");
        String n5 = scanner.nextLine();
        //g.setId(n5);
    
        //ids[i] = n5;
        //String[] names = new String[n4];
        System.out.println("Please enter in the name given to gerbil whose lab id you just entered");
        String n6 = scanner.nextLine(); // gerbil name
        //g.setName(n6);
    
        //String[] amountfood = new String[n1];
        int[] amountfood = new int[n1];
    
        for (int j = 0; j < n1; j++) {
            System.out.println("how much of " + food[j]
                    + " did this gerbil eat");
            String n8 = scanner.nextLine();
            //amountfood[j = n8;
            amountfood[j] = Integer.parseInt(n8);
    
        }
        boolean[] bite = new boolean[n4];
        System.out
                .println("Does this Gerbil bite? Enter True or False");
        String n77 = scanner.nextLine();
        if (n77.equalsIgnoreCase("True")) {
            bite[i] = true;
        } else {
            bite[i] = false;
        }
    
        boolean[] escape = new boolean[n4];
        System.out
                .println("Does this Gerbil escape? Enter True or False");
        String n89 = scanner.nextLine();
    
        if (n89.equalsIgnoreCase("True")) {
            escape[i] = true;
        } else {
            escape[i] = false;
        }
    
        gerbil[i] = new Gerbil(n5, n6, amountfood, escape[i], bite[i], food);
    
    }
    
    System.out.println("What information would you like to know?");
    String n55 = scanner.nextLine();
    
    String n33 = "search";
    String n34 = "average";
    String n35 = "restart";
    String n36 = "quit";
    
    if (n55.equalsIgnoreCase(n34)) {
        System.out.println(averagefood());
    
    } else {
        if (n55.equalsIgnoreCase(n33)) {
    
            System.out.println("Please type the lab id of the gerbil you wish to search for");
    
            String n87 = scanner.nextLine();
    
            Gerbil g = searchForGerbil(n87);
    
            Gerbil gerbilattributes = searchForGerbil(n87);
    
            String gerbid = g.getId();
    
            String gerbname = g.getName();
    
            boolean gerbbite = g.getBite();
    
            boolean gerbescape = g.getEscape();
    
            for (int i = 0; i < n1; i++) {
                food = g.getTypeFood();
            }
    
    
                int[] gerbfoods = g.getAmountFood();
    
             System.out.print("Lab :"+gerbid + " Name:"+ gerbname + " ("+ ((gerbbite==true)?"will bite":"will not bite")  +  "," + ((gerbescape==true)?"will escape":"will not escape") + ")");
            for (int i = 0; i < n1; i++) {
                System.out.print( " " + food[i] + ":"+ gerbfoods[i]);
            }
    
        } else {
            if (n55.equalsIgnoreCase(n35)) {
    
                //GO BACK
            } else {
                if (n55.equalsIgnoreCase(n36)) {
    
                    System.exit(0);
                } else {
                    System.out.println("ERROR");
                }
            }
        }
    }
    }
    
           public static String averagefood() {
    
    
    // girbil[0] .. girbil[n] / n = average!!!
    average = gerbil[i] / gerbil.length
    double average = 0.0;
    for (int i = 0; i <= gerbil.length; i++) {
        Gerbil g = gerbil[i];
    
    
        average +=  g.getAmountFood();
    }
    average /= gerbil.length;
    
    for (int i = 0; i <= gerbil.length; i++) {
        Gerbil g = gerbil[i];
        String gid = g.getId();
        String gname = g.getName();
        String everything = gid + " " + gname + " " + average + "\n";
    
    }
    
    
    
    int i = 0;
    Gerbil g = gerbil[i];
    String gid = g.getId();
    
    String gname = g.getName();
    long percent = Math.round(n8 * 100.0 / n3);
    
    String everything = gid + " " + gname + " " + percent + "\n";
    for (i = 0; i <= gerbil.length; i++) {
    
        //turn everything;
    }
    
    return everything;
    }
    
    public static Gerbil searchForGerbil(String n87) {
    
    for (int i = 0; i < gerbil.length; i++) {
        Gerbil g = gerbil[i];
    
        if (n87.equals(g.getId())) {
            return gerbil[i];
    
        }
    
    // return (new Gerbil[i]);
    }
    return null;
    
    }
    }
    

    以下是我的第二个“沙鼠”课程

    public class Gerbil {
    
    private String id;
    private String name;
    private int[] amountfood;
    private int numbergerbils;
    private String[] food;
    
    private boolean escape;
    private boolean bite;
    
    public Gerbil(String n5, String n6, int[] numOfFood, boolean newEscape, boolean newBite, String[] n2) {
    
    id = n5;
    name = n6;
    amountfood = numOfFood;
    escape = newEscape;
    bite = newBite;
    food = n2;
    }
    
    public Gerbil(String[] typefood) {
    
    food = typefood;
    }
    
    public Gerbil(int[] numOfFood) {
    amountfood = numOfFood;
    
    }
    
    public int[] getAmountFood() {
    
    return amountfood;
    }
    
    public boolean getBite() {
    
    return bite;
    }
    
    public boolean getEscape() {
    
    return escape;
    }
    
    public String getId() {
    
    return id;
    }
    
    public String getName() {
    return name;
    }
    
    public void setId(String newId) {
    id = newId;
    }
    
    public void setName(String newName) {
    name = newName;
    }
    
    public String[] getTypeFood() {
    
    return food;
    
    
    }
    
    }
    

2 个答案:

答案 0 :(得分:0)

只是概括了错误的含义:

  

对于参数类型double,int []&#34;,运算符+ =未定义。   在以下代码中:average + = g.getAmountFood();

您的getFoodAmount()正在返回int[],这是一个整数数组。如果要添加值,则需要遍历数组并在数组中的每个数字上使用+=

你的第二个错误:

  

对于参数类型,未定义operator /,Gerbil,int&#34;在   以下代码:average = gerbil [i] / gerbil.length

嗯,呃,我无法找到这条线。请帮帮我,我很乐意帮助你。 ; d

答案 1 :(得分:0)

The operator += is undefined for the argument type(s) double, int[]" at the following code: average += g.getAmountFood();

这是因为方法getAmountFood()返回一个整数数组。声明一个数组并将方法getAmountFood()返回的数组分配给新数组,然后你可以遍历它来访问个体你可以这样做:

 int[] amountFood =  g.getAmountFood(); 

 double average = 0;

 for(int i : amountFood){
     average += i;    
 }
 average /= gerbil.length;

"The operator / is undefined for the argument type(s) Gerbil, int" at the following code: average = gerbil[i] / gerbil.length

这里你使用了i在这个范围内未声明的内容。你在之前的for循环中声明了i,这些循环无法从方法averagefood()访问。

你应该写

   food = g.getTypeFood();

而不是:

  for (int i = 0; i < n1; i++) {
    food = g.getTypeFood(); 
  }