【发布时间】:2014-03-05 10:57:04
【问题描述】:
我正在制作的这个程序有问题。这是该程序的目的: 编写一个程序,从用户那里获取数字输入。如果用户输入负数,程序将停止接受用户的输入。然后,程序会从程序中找出重复的数字,并确定它出现了多少次。
这是示例输出:
Enter a number : 5
Enter a number : 5
Enter a number : 7
Enter a number : 2
Enter a number : 7
Enter a number : 3
Numbers Entered:
2 _________ 1
3 _________ 1
5 _________ 3
7 _________ 2
注意:如果数字出现两次或多次,则不会在输出中重复。数字也有排列。
我已经弄清楚第一部分(如果用户输入负数)
Scanner scan = new Scanner(System.in);
ArrayList<Integer> arrayNumbers = new ArrayList<Integer>();
ArrayList<Integer> countArray = new ArrayList<Integer>();
int x,;
int counter=0;
int confirm;
int length=0;
int input;
int z;
int elements=0;
for (x=0;x<=counter;x++)
{
if (counter==x)
{
System.out.print("Enter a number : ");
input = scan.nextInt();
arrayNumbers.add(input);
confirm = input;
if (confirm<0)
{
counter--;
arrayNumbers.remove(x);
}
else
{
counter++;
length++;
}
}
}
我现在卡在程序的比较部分。我做了一个代码,但它似乎不起作用:
int blah,count,z10;
Arrays.sort(finalArray);
for (int i=0;i<finalArray.length;i++)
{
blah = finalArray[i];
count=0;
while(finalArray[i]==blah&&z10<finalArray.length)
{
count++;
i++;
}
System.out.println("Number : "+blah+" Count : "+count);
}
有人可以帮我解释一下逻辑或代码吗?帮助将不胜感激。谢谢:)
附:我只需要使用数组来做到这一点。没有其他方法。
【问题讨论】:
-
使用一个 HashMap
而不是两个 ArrayList -
@user3226012:您有上述评论形式的答案。
-
你只是说它不起作用,会发生什么?另外,您初始化变量
z10没有任何值,然后在while 循环中将finalArray.length与它进行比较,您是不是忘记分配z10?还有一件事,在内部 while 循环中,将 i 增加为i++,当 i 变得大于数组的长度时会发生什么?您将进行比较finalArray[i]==blah并得到一个超出范围的错误。
标签: java arrays numbers compare