如何打印阵列位置

时间:2016-03-31 02:42:58

标签: java

我想做什么

缺席:创建一个数组,记录每天缺席的员工数量;它应该足够大,可以存储整整一个月的数据。例如,在该月的第一天,1名员工缺席;第二天,0名员工缺席;第三天缺席3次;最终在本月的最后一天有2次缺席。该数据不需要由用户输入。

提示用户输入数字;显示他们输入当天的缺席次数

我有什么:

-X

4 个答案:

答案 0 :(得分:0)

首先,您可以使用数组列表声明数组元素,如下所示:

mArray = {0,0,0,20,0,2,20};//fill with your values

在用户输入当天打印出缺席次数时,首先检查该号码是否超出界限

if(input > mArray.length-1 || input < 0){
    System.out.println("That is a invalid input!");
}else{
    System.out.println("Their were " + mArray[input] + " absences on day : " + input);

您需要在调用该输入之前检查输入,以防止OutOfBoundsExceptions崩溃您的程序。

答案 1 :(得分:0)

System.out.println("On the Date " + a + "has " + mArray[a] + " absences" );

这是您问题的直接答案。正如前一篇文章中所建议的那样,您应该进行边界测试。

答案 2 :(得分:0)

我个人建议进行以下修改。 您可以简化数组的创建,您需要检查使用while循环输入的无效整数(并重试直到成功)或(而不是while循环)添加try-catch块,并且您可以访问该值你正在使用

从数组中寻找
mArray[a].

以下代码利用这些建议,并使用while循环修改它以处理可能抛出的ArrayIndexOutOfBoundsException。如果需要,可以删除或替换为try-catch。

package absences;

import java.util.Scanner;

/**
 *
 * @author Matthew
 */
public class Absences {

    public static void main(String[] args) 
    {
        Scanner keyboard = new Scanner(System.in);
        int a = -1;

        System.out.println("Enter the date.");

        while ( a < 0 || a > 31 )
        {
            try 
            {
                a = keyboard.nextInt();
            } catch (InputMismatchException e) {
                sc.next(); 
            }
            if ( a < 0 || a > 31 )
                System.out.println("Invalid date, try again!");
        }

        int[] mArray = {0,1,0,3,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}

        System.out.println("On the Date " + a + "has " + mArray[a] + " absences" );
    }
}

此外,马修正确地指出,没有几个月有32天。在处理日期和时间时,我建议您查看日历或时间类。

编辑:我修改了我的代码,因为我忽略了这样一个事实,即获取int输入的方法不起作用,正如Preyas Shah在答案中正确指出的那样。

答案 3 :(得分:0)

还有一件事。以前的答案,数组绑定检查似乎很好,应该解决问题。 但是,还有一件事。您正在使用的方法:

int a = keyboard.next()。charAt(0);

根据我的理解,它只会从字符串中获取第一个字符,比如日期输入是&#39; 23&#39;,它只需要&#39; 2&#39;。因此,您从用户获得的所有索引值仅为单个数字。 我检查了Java API,不确定这是否有用。

int a = keyboard.nextInt();

请让我知道,我也试图更好地理解。