微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何读取用户输入到具有设定大小的数组中的输入量?

目标是制作一个大小为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;
      }  
}

解决方法

没有方法可以使用,因为所有未指定元素的索引都将自己设置为0。相反,您可以做的只是添加一个变量,每次添加元素时将其加1到您的数组。在您的情况下,您可以为此使用i(在for标头之外声明它,以便以后可以访问它)。

,

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

        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;
            }
        }
,

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

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.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。