繁体   English   中英

确定数字出现多少次-Java

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM