Re: [問題] 關於Queue.Count==0的判斷問題
有很多種方式可以解單的解決.
直接轉成 int[] 你應該比較好理解, 隨手寫了一下.
1.
private void QueueHere(Queue<int> MyQueue) // function QueueHere
{
int[] MyData = MyQueue.ToArray(); // 將資料轉成 int[]
... ... ... // 變成 array 就比較好做了吧?
// 記得 Queue data 不會被 del
}
2.
private void QueueHere(Queue<int> MyQueue) // function main
{
int limit = 30; // 你的限制
while (MyQueue.Count >= limit) // Queue 大於30時 迴圈處理
{ Process(MyQueue, limit); }
if (MyQueue.Count != 0) // Queue 小於30時 特別處理
{ Process(MyQueue, MyQueue.Count); }
}
private void Process(Queue<int> MyQueue, int Quantity) // function process
{
string SS = "";
while (Quantity > 0)
{
SS += "Dequeue-> " + MyQueue.Dequeue() + "\n"; // 不用特別改型態
Quantity--;
}
// SS 要印出來就印吧
}
※ 引述《catmouse520 (快特研替Kimi)》之銘言:
: 有個問題一直卡住想請教版上熱心的先進
: 假設我的Queue有100筆
: 我每次要取出30筆
: 1-30 31-60 61-90 91-100
: ^^^^^^當迴圈處理到取出第11筆時
: Queue中沒有資料了會出現問題
: 故我加了一個判斷temp.count==0
: 結果跳出後
: 只印出Start & End這兩行
: 我看不見now peek=
: Dequeue->
: 請問我該如何做呢??
: 程式碼如下:
: Queue<int> temp = new Queue<int>();
: richTextBox1.AppendText("Start Frequency output" + "\n");
: for (int j = 0; j < 4; j++)
: {
: if (temp.Count == 0)
: {
: for (int i = 0; i < 30; i++)
: {
: richTextBox1.AppendText("now peek= " + Convert.ToString(temp.Peek()) + "\n");
: richTextBox1.AppendText("Dequeue->" + temp.Dequeue() + "\n");
: }
: richTextBox1.AppendText("now peek= " + Convert.ToString(temp.Peek()) + "\n");
: }
: }
: richTextBox1.AppendText("Start Frequency output End" + "\n");
--
▲ ▲▲▲ ▄▇▃▂▁ ▁▂▃▇▄
▃▆◢ ■ ◣▆▃ ╦ ╗█▇▆▃▁▄ ▄▁▃▅▆▇╔╗
◢█ █◣∥◢█▇█◣ ║ ║ ╦ ╔╗ ╦╗ ╦ ╔ ╗
█◣▲ ▼▼▼▼ ▲◢█ ║ ║ ║ ╠╣ ╠ ╗ ║ ║ ║
◥█◤◥▲▲▲◤◥█◤ ║ ║ ╩ ╩ ╩ ╩ ╝ ╩ ╝╚ ╝
ψyzelly ◤ ◥ ╩ ╝▁▂▃▄▆▄ ▄ ▄▃▂▁╚╝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.104.66.207
推
09/07 13:42, , 1F
09/07 13:42, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):