如何创建一个显示数组中元素数量的方法?

时间:2014-12-01 11:35:06

标签: java arrays

我对Java很新,但这是我的问题。

我创建了一个数组方法,该方法包含一个10个整数的块,用户将输入该块。它们将在完成时输入-1,但-1将被存储。这是我的代码:

    public static int [] inputGrades()
    {
        Scanner kb = new Scanner (System.in);
        int [] iGrades = new int [10];
        System.out.print("\nInput test scores, enter -1 when you're finished.\n");
        for (int i =0; i<iGrades.length;i++)
        {
            if (iGrades[i]>=-1)
            {
                iGrades[i]=kb.nextInt();
                break;
            }
        }
        return iGrades;   
    }

之后,我要创建一个方法,该方法应该计算-1到多少个数值。所以说,用户输入了5个数字和-1,我显示了6.这就是我拥有的数据:

public static int countArrayElements(int[] array)
    {
        int iCount = 0;
        for (int i = 0; i < array.length; i ++)
        {
            if (array[i] != 0)
            {
            iCount ++;
            }
        System.out.print ("\nThere are " + iCount + "numbers in the array.");
        }
        return iCount;
    }

它回来的只有10个。非常感谢正确方向的推动,谢谢。

4 个答案:

答案 0 :(得分:0)

将一维数组的每个组件初始化为其默认值。所以对于int它是0,你的方法返回数组的长度。查看specification

答案 1 :(得分:0)

您的两种方法都存在问题,请将它们更改为以下内容:首先初始化数组:

public static int [] inputGrades(){
    System.out.print("\nInput test scores, enter -1 when you're finished.\n");
    Scanner kb = new Scanner (System.in);
    int [] iGrades = new int [10];
    for (int i =0; i<iGrades.length;i++){
      iGrades[i] = Integer.MIN_VALUE;
    }
    for (int i =0; i<iGrades.length;i++){
        iGrades[i]=kb.nextInt();
        if (iGrades[i] ==-1)
           break;
    }
    kb.close(); // Don't forget to close the scanner
    return iGrades;   
}


public static int countArrayElements(int[] array){
        int iCount = 0;
        for (int i = 0; i < array.length; i ++)
        {   
          if(array[i] > -1){           
              iCount++;
          }
        }
        System.out.print ("\nThere are " + iCount + " numbers in the array.");
        return iCount;
}

答案 2 :(得分:-1)

可能是你需要使用,if else条件来打破循环..

    for (int i =0; i<iGrades.length;i++)
    {
        if (iGrades[i]==-1)
        {
            break;

        }
        else{
            iGrades[i]=kb.nextInt();
        }
    }

这个循环接受10个元素,用户只输入-1它将会中断。

public static int countArrayElements(int[] array)
{
    int iCount = 0;
    for (int i = 0; i < array.length; i++)
    {
        if (array[i] != -1)
        {
        iCount ++;
        }
    }
    System.out.print ("\nThere are " + (iCount+1) + "numbers in the array.");
    return iCount;
}

此处(iCount + 1)的打印也是-1。

答案 3 :(得分:-1)

使用ArrayList

,可以用单一方法代替两种方法
public static int inputGrades()
{
    Scanner scanner = new Scanner (System.in);

    int GRADE_SIZE = 10;

    List<Integer> iGrades = new ArrayList<>();

    System.out.print("\nInput test scores, enter -1 when you're finished.\n");

    for (int idx = 0; idx < GRADE_SIZE; idx++)
    {
        int inputNum = scanner.nextInt();
        iGrades.add(inputNum);

        if(inputNum == -1){
            break;
        }
    }

    return iGrades.size();   
}

主要

public static void main(String[] args) {    
System.out.println("Grade Size :: "+inputGrades());
}