为什么我的简单数组不起作用?

时间:2016-11-26 15:08:36

标签: java arrays

该程序应该询问有多少动物在野外留下5次。然后它应该使用第二种方法输出相同的信息。但我无法弄清楚这一点;每次我根据以前的问题改变任何东西,我只是添加错误的数量。

img.save

所以这个编译好了,然后当我在每个循环后在终端中添加了5个数字

import java.util.Scanner;

class animals {

    public static void main(String[] args) {

        int[] q1 = question();
        output(q1);

        System.exit(0);

    } // exit main

    public static int[] question() {
        String[] wild = { "Komodo Dragon", "Mantee", "Kakapo", "Florida Panther", "White Rhino" };
        int number = 0;
        int[] record = {};
        for (int i = 1; i <= 5; i++) {
            System.out.println(wild[number] + ":");
            Scanner scanner = new Scanner(System.in);
            System.out.println("How many are left in the wild?");
            int howMany = scanner.nextInt();
            record = new int[] {howMany};
            number++;

        }//end for loop

        return record;

    }// end method question

    public static void output(int[] q1){
        System.out.println("There are " + q1[0] +  " Komodo Dragons in the wild");
        System.out.println("There are " + q1[1] +  " Mantees in the wild");
        System.out.println("There are " + q1[2] +  " Kakapos in the wild");
        System.out.println("There are " + q1[3] +  " Florida Panthers in the wild");
        System.out.println("There are " + q1[4] +  " White Rhinos in the wild");
    }//end method output

} // end class animals

除了我获取文本的事实,提供的monodo龙数是我输入的最后一个数字而不是第一个

2 个答案:

答案 0 :(得分:3)

这没有意义

int[number] record = {};

最像你的意思

int[] record = new int[wild.length];

而不是

for (int i = 1; i <= 5; i++) {

你需要

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

而不是以下创建1值[0]

的数组
record = new int[] {howMany};

当您尝试访问[1]

时会生成以下内容
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

你需要

record[i] = howMany;

当您在IDE(或编辑器)中编写每行代码时,您应该看到是否编译并且如果不添加更多行,则不太可能有所帮助。我建议你尽可能多地尝试编译和测试,以便知道错误来源的位置,当你遇到错误时,你可以逐步调试调试器中的代码,看看为什么程序没有按照你的意愿行事。

答案 1 :(得分:0)

这就是你需要的:

int number = 0; int[] record = new int[5];

以及您需要做的另一项修改:

int howMany = scanner.nextInt(); record[number] = howMany;

从最后一行删除评论。

现在你的程序应该可以正常工作。

了解一些有关数组的基本知识。