【问题标题】:How can I read the amount of input a user has entered into an array with a set size?如何读取用户输入到具有设定大小的数组中的输入量?
【发布时间】:2020-09-02 23:51:43
【问题描述】:

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

【问题讨论】:

  • 为什么不直接调整数组的大小呢?然后,您可以使用现有的方法来查找所需的属性。

标签: java arrays for-loop if-statement


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 是的!谢谢,这就是我一直在寻找的东西,我不敢相信我看过了。我用了 inputCount--;就像我对 i-- 所做的那样;我也需要它的地方。感谢您的帮助!
    【解决方案3】:

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

    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.
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2016-02-10
      • 1970-01-01
      • 1970-01-01
      • 2016-04-27
      • 2011-10-11
      • 1970-01-01
      相关资源
      最近更新 更多