Java 随机数排序数组
对于我的java类,我有以下问题: 编写一个程序,生成范围为0到25的100个随机整数,并将它们存储在数组中。然后,程序应该调用一个类方法,将奇数排序到一个数组中并返回该数组。然后,程序应该调用另一个方法,将偶数排序到单独的数组中并返回该数组。然后应显示两个阵列 这是我的代码:Java 随机数排序数组,java,Java,对于我的java类,我有以下问题: 编写一个程序,生成范围为0到25的100个随机整数,并将它们存储在数组中。然后,程序应该调用一个类方法,将奇数排序到一个数组中并返回该数组。然后,程序应该调用另一个方法,将偶数排序到单独的数组中并返回该数组。然后应显示两个阵列 这是我的代码: public class Assignment8 { public static void main(String [] args) { int [] randomNum
public class Assignment8
{
public static void main(String [] args)
{
int [] randomNums = new int [100];
for (int i = 0; i < randomNums.length; i++) {
randomNums[i] = (int) (Math.random() * 26);
int[] oddNums = sortOdd(randomNums);
System.out.println("The odd numbers are ");
for (int n = 0; n<=oddNums.length; n++) {
System.out.print(n);
}
int[] evenNums = sortEven(randomNums);
System.out.println("The even numbers are ");
for (int o = 0; o<=evenNums.length; o++) {
System.out.print(o);
}
}
}
public static int[] sortOdd(int[] randomNums)
{
int numOdds = 0;
for (int x : randomNums){
if(x % 2 == 1){
++numOdds;
}
}
int[] oddNums = new int[numOdds];
int z = 0;
for (int n : randomNums){
if(n % 2 == 1){
oddNums[z] = n;
z++;
}
}
return oddNums;
}
public static int[] sortEven(int[] randomNums)
{
int numEvens = 0;
for (int x : randomNums){
if(x % 2 == 0){
++numEvens;
}
}
int[] evenNums = new int[numEvens];
int z = 0;
for (int n : randomNums){
if(n % 2 == 0){
evenNums[z] = n;
z++;
}
}
return evenNums;
}
}
公共类分配8
{
公共静态void main(字符串[]args)
{
int[]randomNums=新int[100];
对于(int i=0;iimport java.util.ArrayList;
导入java.util.List;
公共课堂作业8
{
公共静态void main(字符串[]args)
{
int[]randomNums=新int[100];
对于(int i=0;i
您的代码看起来不错,但是您缺少一种合适的排序方法,升序或降序无关紧要,但是在这种情况下,您选择对数组进行排序的算法是未知的。让我向您介绍排序数组的最差的方法,气泡排序,还有许多类似public static void sortArray( int[] data )
{
for( int x = 0; x < data.length; x++ )
{
for( int y = 0; y < data.length - 1; y++ )
{
if( data[y] < data[y + 1] )
{
int hold = data[y];
data[y] = data[y + 1];
data[y + 1] = hold;
}
}
}
}
如果您在中仍然面临困难,您可以很好地想象sortOdd的代码应该是什么样子的,那么这就是sortOdd(int[])定义
public static int[] sortOdd( int[] data )
{
int len = 0;
int[] copyData;
for( int x = 0; x < data.length; x++ )
{
if( data[x] % 2 != 0 )
{
len++;
}
}
copyData = new int[len];
for( int x = 0 , y = 0; x < data.length; x++ )
{
if( data[x] % 2 != 0 )
{
copyData[y++] = data[x];
}
}
sortArray( copyData );
return copyData;
}
公共静态int[]sortOdd(int[]data)
{
int len=0;
int[]复制数据;
对于(int x=0;x
如果有进一步的问题,可以继续提问,但所有这些都应该对您很好您正在为循环迭代器打印
,而不是排序数组中的值…我想您指的是System.out.print(oddNums[n])我告诉过你了。祝你好运!你能解释一下你改变了什么,而不是仅仅发布一段代码吗?我没有添加排序。但我已经改变了排序以打印奇数和偶数。可能是使用差异来查看更改了什么。对不起,我的意思是在你的帖子中,以便其他人可以轻松看到为实现你的答案所做的工作。我第一次尝试在slack overflow中.我会继续学习的.这是我的错误.谢谢你帮了我大忙
public static int[] generateRandomArrayWithLimitAndSize( int limit , int size )
{
final java.util.Random rand = new java.util.Random();
final int[] data = new int[size];
for( int x = 0; x < data.length; x++ )
{
data[x] = rand.nextInt(limit);
}
return data;
}
public static int[] sortEven( int[] data )
{
int len = 0;
int[] copyData;
for( int x = 0; x < data.length; x++ )
{
if( data[x] % 2 == 0 )
{
len++;
}
}
copyData = new int[len];
for( int x = 0 , y = 0; x < data.length; x++ )
{
if( data[x] % 2 == 0 )
{
copyData[y++] = data[x];
}
}
sortArray( copyData );
return copyData;
}
public static void main(String[] args)
{
int[] myArray = generateRandomArrayWithLimitAndSize( 25 , 100 ); // limit,size
System.out.println( "Actual Array: " + java.util.Arrays.toString( myArray ) );
System.out.println( "\r\nSorting Evens: \r\n" + java.util.Arrays.toString( sortEven( myArray ) ) );
System.out.println( "\r\nSorting Odds: \r\n" + java.util.Arrays.toString( sortOdd( myArray ) ) );
}
public static int[] sortOdd( int[] data )
{
int len = 0;
int[] copyData;
for( int x = 0; x < data.length; x++ )
{
if( data[x] % 2 != 0 )
{
len++;
}
}
copyData = new int[len];
for( int x = 0 , y = 0; x < data.length; x++ )
{
if( data[x] % 2 != 0 )
{
copyData[y++] = data[x];
}
}
sortArray( copyData );
return copyData;
}