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