簡體   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