참고 : 표시가 아닌 연습 문제입니다.정수 배열 및 중복 인쇄 빈도
이 첫 해 자바 과정에서 주어진 연습 문제 :
설계 및 범위 0 ~ 50이 포함됩니다 사용자가, 정수의 임의의 수를 읽고 응용 프로그램을 구현, 각 항목의 입력 횟수를 계산합니다. 모든 입력이 처리 된 후, 한 번 이상 입력 된 모든 값 (발생 횟수 포함)을 인쇄하십시오. 또한 사용자가 입력 한 모든 숫자의 평균을 계산하는 값을 반환하지 않는 메서드를 작성합니다.
이import java.util.Scanner; public class Main { public static Scanner scan = new Scanner(System.in); public static int[] userIntegers() // this method will build the array of integers, stopping when an out-of-range input is given { System.out.println("Enter the number of integers to be recorded: "); int numInts = scan.nextInt(); int[] userArray = new int[numInts]; int i = 0; while(i < numInts) { System.out.println("Enter an integer between 1-50 inclusive: "); int userInteger = scan.nextInt(); if(isValidInteger(userInteger)) { userArray[i] = userInteger; i++; } else if(isValidInteger(userInteger) == false) { System.out.println("Try again."); } } return userArray; } public static void occurrenceOutput(int[] input) // this method will print the occurrence data for a given array { int[] occurrenceArray = new int[51]; int j = 0; while(j < 51) // iterates through all integers from 0 to 50, while the integer in the array is equal to integer j, the corresponding occurance array element increments. { for(int eachInteger : input) { occurrenceArray[j] = (eachInteger == j)? occurrenceArray[j]+=1: occurrenceArray[j]; } j++; } int k = 0; for(int eachOccurrence : occurrenceArray) // as long as there is more than one occurrence, the information will be printed. { if(eachOccurrence > 1) { System.out.println("The integer " + k + " occurrs " + eachOccurrence + " times."); } k++; } } public static boolean isValidInteger(int userInput) // checks if a user input is between 0-50 inclusive { boolean validInt = (51 >= userInput && userInput >= 0)? true: false; return validInt; } public static void main(String[] args) { occurrenceOutput(userIntegers()); } }
사람이 더 우아한 방향으로 날 지점 수 :
이 내가 가진 것입니다 (나는이 정리 될 때까지 나는 "평균 발생"부분을 생략했다)?
편집 : 도움을 주셔서 감사합니다! 당신은 실제로 histogram를 찾고 있습니다
import java.util.Scanner;
public class simpleHist
{
public static void main(String[] args)
{
getUserInputAndPrint();
getIntFreqAndPrint(intArray, numberOfInts);
}
private static int numberOfInts;
private static int[] intArray;
private static int[] intFreqArray = new int[51];
public static void getUserInputAndPrint()
{
// The user is prompted to choose the number of integers to enter:
Scanner input = new Scanner(System.in);
System.out.println("Enter the number of Integers: ");
numberOfInts = input.nextInt();
// The array is filled withchInteger = integer; integers ranging from 0-50:
intArray = new int[numberOfInts];
int integer = 0;
int i = 0;
while(i < intArray.length)
{
System.out.println("Enter integer value(s): ");
integer = input.nextInt();
if(integer > 50 || integer < 0)
{
System.out.println("Invalid input. Integer(s) must be between 0-50 (inclusive).");
}
else
{
intArray[i] = integer;
i++;
}
}
// Here the number of integers, as well as all the integers entered are printed:
System.out.println("Integers: " + numberOfInts);
int j = 0;
for(int eachInteger : intArray)
{
System.out.println("Index[" + j + "] : " + eachInteger);
j++;
}
}
public static void getIntFreqAndPrint(int[] intArray, int numberOfInts)
{
// Frequency of each integer is assigned to its corresponding index of intFreqArray:
for(int eachInt : intArray)
{
intFreqArray[eachInt]++;
}
// Average frequency is calculated:
int totalOccurrences = 0;
for(int eachFreq : intFreqArray)
{
totalOccurrences += eachFreq;
}
double averageFrequency = totalOccurrences/numberOfInts;
// Integers occurring more than once are printed:
for(int k = 0; k < intFreqArray.length; k++)
{
if(intFreqArray[k] > 1)
{
System.out.println("Integer " + k + " occurs " + intFreqArray[k] + " times.");
}
}
// Average occurrence of integers entered is printed:
System.out.println("The average occurrence for integers entered is " + averageFrequency);
}
}
와우 우리는 지금 내 이산 수업에서 완전히 히스토그램이며, 클릭하지도 않았습니다. 카운트 정렬에 대한 링크는 매우 도움이되었습니다. 감사합니다! –
@obfuscater : 당신이이 연결을하고있어 기쁘게 생각합니다. 수학과 이론 수업은 프로그래머로서 당신에게 큰 자산이 될 것입니다. – amit