在for循环中设置数组内容

时间:2018-01-18 09:59:41

标签: java arrays

我刚学过数组,但我无法在for循环中使用它们,我无法理解代码的错误以及如何实现这一点。

import java.util.*;

public class DemoCane {

    Scanner sc = new Scanner (System.in);
    public static int[] cani;

    public static void main (String args []){
        setQuantitaCani();
        for (int i=0; i<=cani[nrcani].lenght; i++){
            Cane cani[i] = new Cane();
            cani[i] = Cane.setInfo();
            cani[i].getInfo();
        }

    }

    public static void setQuantitaCani(){
        System.out.println("Quanti cani vuoi aggiungere?");
        int nrcani = sc.nextInt();
        cani[] = new int[nrcani];
    }
}

我用这种方式编写代码是因为我想从用户那里得到他想要输入多少只狗的信息(cani意为狗)。然后,对于每只狗,它从狗类创建一个新的狗对象(在另一个编译好的文件中),用户必须设置他的信息。我应该使用while循环吗?

编辑:每一个错误都在这一行:

cani[] = new int[nrcani];

1 个答案:

答案 0 :(得分:2)

稍微更新了您的代码:

public class DemoCane {

    static Scanner sc = new Scanner(System.in);
    private static Cane[] cani;

    public static void main(String args[]) {
        setQuantitaCani();
        for (int i = 0; i < cani.length; i++) {
            cani[i] = new Cane();
            cani[i] = cani[i].setInfo();
            cani[i].getInfo();
        }

    }

    public static void setQuantitaCani(){
        System.out.println("Quanti cani vuoi aggiungere?");
        int nrcani = sc.nextInt();
        cani = new Cane[nrcani];
    }
}

解释:

  1. 如果要将Cane - 对象添加到数组中,则数组必须具有该类型(private static Cane[] cani;cani[] = new Cane[nrcani];
  2. 访问数组长度由array_variable_name.length完成。你所做的只是二维数组所需要的
  3. 如果你在main-method工作,你的变量也必须是static
  4. 使用array_variable_name[index] = new Classname();向数组中添加新对象。您不必执行Cane cani[i] = new Cane();,因为该数组已经是Cane
  5. 类型
  6. 启动数组的工作方式如下:Cane[] cani = new Cane[10]。如果要访问索引,则只需要[],而在启动时则不需要{(除非在声明元素数量时)
  7. cani[i] = Cane.setInfo();我假设您要访问索引处的Cane并设置该对象的信息。由于我们不知道您的Cane - 类实际上是否具有方法public static void setInfo(),因此我将其更改为cani[i] = cani[i].setInfo();以设置信息
  8. 正如评论中已经说明的那样,数组是基于0的。这意味着您可以访问的第一个元素位于cani[0]。因此,您必须小心不要超过界限(0 til (nrcani-1)