Java中生成随机数数组并打印偶数及偶数位置元素的问题
Fixing Your Java Array Methods: Random Generation, Even Number Filtering, and Even Index Extraction
Hey Ethan, let's sort out those array-related hurdles you're facing! I'll walk through each of your methods, fix the gaps in your code, and explain how everything works together.
First, Let's Spot the Key Issues in Your Original Code
- The
genNumber()method has incomplete random number generation code (Math....is cut off) everyEven()andgetEven()don't accept an array as input, so they can't operate on the random array you generate- When printing the results of
everyEven()andgetEven(), you're not converting the array to a readable string (this would print a memory address instead of actual values) - Your
printfsyntax is incorrect for displaying array content
Here's the Full, Working Code with Explanations
import java.util.Arrays; public class ArrayOperations { public static void main(String[] args) { // Generate and store our random number array first int[] randomNumbers = genNumber(); // Print each result with proper human-readable formatting System.out.println("Numbers: " + Arrays.toString(randomNumbers)); System.out.println("Even index elements: " + Arrays.toString(everyEven(randomNumbers))); System.out.println("Even numbers: " + Arrays.toString(getEven(randomNumbers))); } // Method to generate an array of 10 random integers (0-99) public static int[] genNumber(){ int[] number = new int[10]; for(int i = 0; i < number.length; i++) { // Generate random int between 0 (inclusive) and 100 (exclusive) number[i] = (int)(Math.random() * 100); } return number; } // Method to get elements at even indices (0, 2, 4...) public static int[] everyEven(int[] inputArray){ // Calculate result size: (length +1)/2 handles both even/odd input lengths int resultSize = (inputArray.length + 1) / 2; int[] evenIndexElements = new int[resultSize]; int index = 0; // Step through the array 2 elements at a time to grab even indices for(int i = 0; i < inputArray.length; i += 2) { evenIndexElements[index++] = inputArray[i]; } return evenIndexElements; } // Method to filter out even numbers from the array public static int[] getEven(int[] inputArray){ // First count how many even numbers exist to size our result array int evenCount = 0; for(int num : inputArray) { if(num % 2 == 0) { evenCount++; } } int[] evenNumbers = new int[evenCount]; int index = 0; // Populate the result array with even values for(int num : inputArray) { if(num % 2 == 0) { evenNumbers[index++] = num; } } return evenNumbers; } }
Breakdown of Each Fix
- genNumber(): Completed the random number generation with
Math.random() * 100to produce integers between 0 and 99. Adjust the multiplier if you want a different range (e.g.,* 50for 0-49). - everyEven(): Added an
int[]parameter to receive the target array. We calculate the result array size based on input length, then loop through stepping by 2 to grab elements at indices 0, 2, 4, etc. - getEven(): Also added an
int[]parameter. First we count even numbers to create a properly sized result array, then loop again to populate it with even values. - Main Method: Now stores the random array in a variable to pass to other methods. Uses
Arrays.toString()for all array prints to show readable values instead of memory addresses.
Example Output
Numbers: [42, 17, 88, 3, 50, 91, 14, 73, 22, 65] Even index elements: [42, 88, 50, 14, 22] Even numbers: [42, 88, 50, 14, 22]
内容的提问来源于stack exchange,提问作者Ethan Wolfe
相关产品推荐
相关产品推荐

