簡體   English   中英

平均值,最小值,最大值

[英]Average, minimum, maximum

所以在我的程序中,用戶一次輸入一個數字列表,當我用“end”語句結束列表編號時,設置為-1,一旦我這樣做,我得到我的平均值,最大值,最小,我的問題是,當我得到最小輸出時,它每次都是-1,我很難從數組中刪除-1,任何想法???

import java.util.Scanner; //import scanner to user scanner tool

public class Average { //creating public class

    public static void main(String[]args) { //creating public static main

        Scanner input = new Scanner(System.in); //creating scanner input to grab user input

        System.out.println("Please enter a list of numbers, entering -1 to end the list: ");

        double[] numbers = new double[20]; //creating 20 count array
        double sum = 0; 
        int count = 0;
        double average;
        int end = -1;

        for(int i = 0; i<numbers.length; i++) {

            System.out.print("Enter a number: ");
            numbers[i] = input.nextDouble();

            if(numbers[i]== end) {

             break;

            }
            sum+= numbers[i];
            count++;
        }    
        // gets average from user input of numbers
        average = sum/count;
        System.out.println("Average is: " + average);
        double max = maxim(numbers);
        System.out.println("Max: " + max);
        double min = minim(numbers);
        System.out.println("Min: " + min);

    }

//method for finding out maximum number from user input

    public static double maxim(double[] array) {

        double maxNum = array[0];
        for(int i = 1; i<array.length; i++) {
            if(array[i] > maxNum) {
                maxNum = array[i];
            }
        }
     return maxNum; 
    }
 //method for finding out minimum number from user input   

    public static double minim(double[] array) {

        double minNum = array[0];
        for(int i = 1; i<array.length; i++) {
               if(array[i] < minNum && array[i]!=-1) {
                minNum = array[i];
            }

        }
     return minNum; 
    }

}

您可以將輸入轉換為臨時變量,並且只有在它不是結束標志( -1 )時才將其存儲在數組中。 例如:

for(int i = 0; i<numbers.length; i++) {

    System.out.print("Enter a number: ");
    double temp = input.nextDouble();

    if(temp == end) {
        break;
    }
    numbers[i] = temp;
    sum += numbers[i];
    count++;
}

您需要對負責從計算統計信息的代碼中讀取用戶輸入的部分代碼進行docou。 要從結果數組中刪除-1,您需要簡單的不要將此值放到結果中。 當用戶輸入隨機數時,首先檢查它是否為-1,然后將其輸入結果。 像這樣的東西:

import java.util.Scanner;  

public class Average {  

    public static void main(String[]args) { //creating public static main
        double[] numbers = readInputNumbers();
        System.out.println("Average is: " + average(numbers));
        System.out.println("Max: " + max(numbers));
        System.out.println("Min: " + min(numbers));
    }

    public double[] readInputNumbers() {
      Scanner input = new Scanner(System.in); //creating scanner input to grab user input
      System.out.println("Please enter a list of numbers, entering -1 to end the list: ");
      double[] numbers = new double[20];
      final int endInput = -1;
      for(int i = 0; i < numbers.length; i++) {
          System.out.print("Enter a number: ");
          double nextNumber = input.nextDouble();
          if(nextNumber == endInput) {
              break;
          } else {
              numbers[i] = nextNumber;
          }
      }
      return numbers;   
  }

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

    public static double min(double[] array) {
        double minNum = array[0];
        for(int i = 1; i<array.length; i++) {
               if(array[i] < minNum && array[i]!=-1) {
                minNum = array[i];
            }

        }
     return minNum; 
    }

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

}

在自8版以來的jdk中你可以像這樣簡化這個任務:

import java.util.Scanner; 
import java.util.stream.*; 

public class Average {  

    public static void main(String[]args) { //creating public static main
        double[] numbers = readInputNumbers();
        DoubleSummaryStatistics statistics = DoubleStream.of(numbers).summaryStatistics();
        System.out.println("Average is: " + statistics.getAverage()));
        System.out.println("Max: " + statistics.getMax());
        System.out.println("Min: " + statistics.getMin());
    }

    public double[] readInputNumbers() {
        Scanner input = new Scanner(System.in); //creating scanner input to grab user input
        System.out.println("Please enter a list of numbers, entering -1 to end the list: ");
        double[] numbers = new double[20];
        final int endInput = -1;
        for(int i = 0; i < numbers.length; i++) {
            System.out.print("Enter a number: ");
            double nextNumber = input.nextDouble();
            if(nextNumber == endInput) {
                break;
            } else {
                numbers[i] = nextNumber;
            }
        }
        return numbers;   
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM