[英]Determine how many times the number appeared - Java
我正在制作的程序有问题。 该程序的目的是:编写一个将从用户那里输入数字的程序。 如果用户输入负数,则程序将停止接受来自用户的输入。 然后,程序将从程序中找到重复的数字,并确定它出现了多少次。
这是示例输出:
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);
}
有人可以帮助我提供逻辑或代码吗? 帮助将不胜感激。 谢谢 :)
PS我只需要使用数组来做到这一点。 没有其他方法。
您应该使用HashMap <int,int>来存储数字和用户输入它的次数
尝试这样的事情(这是一个基本的想法,而不是真正的代码):
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
当用户输入数字时,请执行以下操作:
if (map.containsKey(input)) {
int counter = map.get(input) + 1;
map.put(input, counter)
}
好的,我更详细地阅读了这个问题,我想让您考虑一些事情。 而且由于这显然是学校的项目,因此我将尝试为您提供所需的提示。
首先,您提到的负数部分。 您正在执行for循环,并与添加的每个数字所增加的计数器进行比较。 将每个数字添加到数组中,如果最后添加的数字为负数,则将其删除并减少结束for循环的计数器。 尽管这行之有效,但这并不是一个很好的可读性代码。 您应该考虑使用一个while循环来检查输入,伪代码有点像这样:
int input
array numberArray
read number into input from user
while input >= 0:
add input to numberArray
read number into input from user
这将从用户读取数字,如果它不是负数,它将添加到数组中并再次读取一个数字,然后重复从用户读取的输入,只要它不是负数即可。
在后面的部分中,您提到需要帮助,您将获得一个排序的数字数组,并且想要打印出数组中每个数字有多少个,您可以执行类似的操作。 考虑到您的局限性(以及我有限的Java知识),我可能会做一些类似此伪代码所示的操作:
sort numberArray
int currentNumber = -1
int counter
for i = 0 while i < array.length do i++:
if numberArray[i] is currentNumber:
counter++
else //if new number
print how many times currentNumber has been encountered (before assigning currentNumber to a new number)
currentNumber = numberArray[i]
counter = 1
print how many times currentNumber has been encountered
这应该遍历整个数组,连续计数一个数组中的一个数字,当您发现一个新数字时,您将打印出当前计数,选择新数字并将计数器设置为1。循环后进行打印的原因是,当我们击中数组中的最后一个数字时,我们将不会进入if / else的else分支,那里是我们的打印语句。
我希望这能使您对如何做到这一点有所了解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.