我有一项任务,我需要为此问题编写代码。
编写一个程序,将键盘中的数字读入int []类型的数组中 您可以假设将有50个或更少的条目。 您的程序允许输入任意数量的数字50 输出是不同数组元素的两列列表 第二列是每个元素的频率列表 列表应在第一列中从大到小排序。
我目前正在打印阵列,但我得到两列50个零。有什么帮助吗?
ArraySort 类
import java.util.*;
public class ArraySort {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter the numbers for your array.");
int[][] d = new int [2][50];
int[] a = new int [50];
int[] b = new int [50];
int[] c = new int [50];
for(int index = 0; index < 50; index++)
{
a[index] = keyboard.nextInt();
}
ArraySort object = new ArraySort();
object.sort(a);
object.duplicate(a, b);
object.frequency(a, c);
for(int index = 0; index < 50; index++)
{
b[index] = d[0][index];
}
for(int x = 0 ; x < 50; x++)
{
c[x] = d[1][x];
}
for(int column = 0; column < 2; column++)
{
for(int row = 0; row < 50; row++)
{
System.out.print(d[column][row]);
}
}
}
public int[] sort(int [] a)
{
int temp = 0;
for(int x = 0; x < 49; x++)
{
for(int y = 0; y < 49; y++)
{
if(a[y] < a[y+1])
{
temp = a[y];
a[y] = a[y+1];
a[y+1] = temp;
}
}
}
return a;
}
public int[] duplicate(int [] a, int[] b)
{
int y = 0;
for(int x = 0; x < 49; x++)
{
if(a[x] != a[x+1])
{
a[x] = b[y];
y++;
}
}
return b;
}
public int[] frequency(int [] a, int [] c)
{
int y = 1;
int z = 0;
for(int x = 0; x < 49; x++)
{
if(a[x] == a[x+1])
{
y++;
}
if(a[x]!= a[x+1])
{
y = c[z];
z++;
y = 0;
}
}
return c;
}
}
答案 0 :(得分:1)
java中的索引从0
开始,d[2][x]
需要一个大小为[3][50]
的数组