2017-12-06 3 views
0

클래스 프로젝트를 만들 때 필요한이 응용 프로그램을 가지고 있으며 마지막 부분 (스캐너의 int 유효성 검사 제외)까지 왔습니다.통계 표시 및 특정 사용자 입력의 평균 계산

이 응용 프로그램은 스캐너에서 사용자 입력을 받아 들일 수 있어야하지만 사용자는 0-100 사이의 숫자 만 입력 할 수 있습니다 (예 : 10 100, 20 0 등). 중지하려면 사용자가 "999"를 입력하고 "999"를 입력하면 응용 프로그램이 숫자 요청을 중지합니다.

그 시점에서 유효한 숫자 (일명 0-100 사이의 숫자)에 대한 특정 통계를 표시해야합니다. 내가 표시해야하는 통계는 다음과 같습니다. 입력 된 총 숫자, 가장 높은 숫자, 가장 낮은 숫자 및 모든 숫자의 평균입니다.

내가 어떻게 그럴 수 있는지 알 수 없다. 아마도 당신은 현재의 코드를 기반으로, 시작하는 데 도움이 https://gist.github.com/tcipack/8f1ed6bd0d7d79b158ee191d228b0a24

+0

지금까지 코드를 가지고 있습니까? 마지막 부분까지 내려 가서 코드를 보여 주셨습니다. – prsvr

+1

입력 한 값을 목록 (예 : ArrayList)에 저장하는 것이 좋습니다. 그런 다음 목록의 연산을 수행하여 목록의 크기 (입력 된 총 숫자)를 얻을 수 있고, 정렬하여 최고/최저를 구할 수 있으며 목록을 반복하여 평균을 구할 수 있습니다. – Rohan

+0

예, 코드를 추가하는 것을 잊었습니다. . 여기가 –

답변

0
여기

뭔가 : 여기

는 코드입니다.

처음에 List을 새로 만든 다음 0-100 범위 내에 있으면 점수를 추가하십시오. 그런 다음 "999"를 입력하면 해당 목록을 사용하여 결과를 계산하십시오.

주석 처리 된 라인은 내가 추가 한 라인은 다음과 같습니다

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter a score or \"999\" to end the program."); 
    int score; 
// List<Integer> numbers = new ArrayList<>(); 
    do { 
     score = input.nextInt(); 

     if(score != 999) { 
      if(score<0 || score >100) { 
       System.out.println("Only use scores that are between 0-100."); 
//   } else { 
//    numbers.add(score); 
      } 
      System.out.println("Enter another score or \"999\" to end the program."); 
     } else { 
//   HERE: Use the numbers list to calculate the results 
      System.out.println("END THE PROGRAM. Results:"); 
     } 
    } while (score != 999); 
} 

당신이 결과를 계산할 수있는 방법의 예 :

int max  = numbers.stream().mapToInt(Integer::intValue).max().getAsInt(); 
int min  = numbers.stream().mapToInt(Integer::intValue).min().getAsInt(); 
int average = numbers.stream().mapToInt(Integer::intValue).average().getAsDouble(); 
int size = numbers.size(); 
+0

다른 것을 삽입해야합니까? –

+0

@AshT 예 결과를 계산 한 다음 인쇄해야합니다. 스트림을 사용하여 결과를 계산하는 방법에 대한 예제를 추가했습니다. – Rohan

0

확인 그래서 여기 가능성 중 하나입니다 :

package com.company; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 

public class Main { 

    public static void main (String[]args) { 

     Scanner in = new Scanner(System.in); 
     List<Integer> listOfNumbers = new ArrayList<>(); 

     int number; 

     System.out.print("Enter your number: "); 

     while ((number = in.nextInt()) != 999){ 

      while (number < 0 || number > 100){ 
       System.out.print("Invalid input. Try again: "); 
       number = in.nextInt(); 
      } 
      System.out.print("Enter your number: "); 
      listOfNumbers.add(number); 
     } 


     int maxNumber = listOfNumbers.stream().mapToInt(x -> x).max().getAsInt(); 
     int minNumber = listOfNumbers.stream().mapToInt(x -> x).min().getAsInt(); 
     double average = listOfNumbers.stream().mapToInt(x -> x).average().getAsDouble(); 
     int totalEntered = listOfNumbers.size(); 

     System.out.printf("Out of %d numbers entered, max is %d, min is %d and average is %.2f", totalEntered, 
                     maxNumber,minNumber,average); 


    } 
} 

샘플 테스트 :

당신의 번호를 입력 : 5

당신의 번호를 입력 : -12

잘못된 입력 : 10

가 전화 번호를 입력합니다. 다시 시도 : 9

이 전화 번호 입력 : 999

3 중 번호 입력을 최대 10 인, 최소 5 평균 것은 내가 빨리 최소, 최대 및 평균을 얻기 위해 Stream 방법을 사용하여 8.00

입니다 , 그런 다음 인쇄합니다.