java—如何读取用户输入到具有设置大小的数组中的输入量?

bvpmtnay  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(364)

目标是创建一个大小为100的数组,让用户输入一组正数,然后在输入-1时退出(或者填充100个点)。之后,打印出读取的输入数、平均值和最高值。我最初是用一个较小的数组来测试我的代码,以获得平均值,现在我意识到array.length不是我想要的,因为我将它切换到100并且不填充100个插槽。我的问题是,如何计算输入到数组中的输入量,而不仅仅是数组的总长度?

import java.util.*;
class Array{
    public static void main(String [] args){
       Scanner scan = new Scanner(System.in);
       int[] array = new int[100];

       System.out.println("Enter your number: ");
       for(int i = 0; i < 100; i++){
          int entry = scan.nextInt();
          if(entry == -1){
             System.out.println("Goodbye.");
             i--;
             break;
          }else if(entry < -1){
             System.out.println("Invalid.");
             i--;
          }else{
             array[i] = entry;
          }
       } 
       //prints amount of elements inside array
       //System.out.println("There are " + countArray(array) + " numbers in this array.");

       //prints average
       System.out.println("The average is: " + findAverage(array));   

       //prints highest val
       System.out.println("The highest value is: " + findHigh(array));

    }
    //public static int countArray(int[] array)
    //need help here and then fixing the issue in the average method

     public static double findAverage(int [] array){
         double sum = 0;
         for(int i = 0; i < array.length; i++){
            sum += array[i];
         }
         double average = (sum/array.length);
         return average;
      }

      public static int findHigh(int[]array){
         int max = array[0];
         for(int i = 1; i < array.length; i++){
            if (array[i] > max){
               max = array[i];
            }
         } 
         return max;
      }  
}
o75abkj4

o75abkj41#

您可以保留一个变量来计算输入的数量。

int inputCount = 0;
        for (int i = 0; i < 100; i++) {
            int entry = scan.nextInt();
            inputCount++;
            if (entry == -1) {
                System.out.println("Goodbye.");
                i--;
                break;
            } else if (entry < -1) {
                System.out.println("Invalid.");
                i--;
            } else {
                array[i] = entry;
            }
        }
agxfikkp

agxfikkp2#

没有方法可以用于此操作,因为您自己没有指定元素的所有索引都被设置为0。您可以做的是,只要有一个变量,每次向数组中添加一个元素时,该变量就增加一个。在您的情况下,可以使用i来实现这一点(在for头之外声明它,以便以后可以访问它)。

zengzsys

zengzsys3#

通常,要在大小合适的数组中输入一些值,首先会提示输入大小。

Scanner input = new Scanner(System.in);
System.out.print("Please enter number of values: ");
int size = input.nextInt();
int[] values = new int[size];
System.out.println("Start entering " + size + " values);
for (int i = 0; i < size; i++) {
    values[i] = input.nextInt();
}
// now do something with the array.

这也允许输入负值,因为它不需要一个值来表示输入结束。这只是一个例子,但这种技术可以很容易地适应您的要求,因为如果您愿意,您仍然可以忽略负数。

相关问题