2017-07-30 65 views
-1

我不知道什麼是錯,但我一直得到相同的結果在控制檯:控制檯始終寫入相同的數字

111 
118 
101 
114 

我解決了這個問題,但現在我的控制檯不顯示我什麼。 我更新了我的代碼!

這是我的練習: 編寫一個程序並要求用戶連續輸入一個數字或輸入「退出」退出。數字列表可能包含重複項。顯示用戶輸入的唯一編號。

這是我的代碼:

while (true) 
    { 
     var numbers = new List<int>(); 
     Console.WriteLine("write a number or type quit if you want to exit, if you want to finish write over: "); 
     var input = Console.ReadLine(); 

     if (input.ToLower() == "quit") 
     { 
      break; 
     } 
     if (input.ToLower() == "over") 
     { 
      var uniq = new List<int>(); 
      foreach (var other in numbers) 
      { 
       Convert.ToInt32(other); 
       if (!uniq.Contains(other)) 
       { 
        uniq.Add(other); 
        Convert.ToInt32(other); 
        Console.WriteLine(other); 

        continue; 
       } 
       int cifre; 
       if (int.TryParse(input, out cifre)) 
       { 
        numbers.Add(cifre); 
       } 
       else 
       { 
        Console.WriteLine("Invalid input, type 'quit', 'over' or a numeric value"); 
       } 

      } 
     } 

    } 

感謝幫助。

我想通了,我只是不得不復制該行:

變種數=新名單(); 到while循環的頂部,並且實際上使用了我在bignning中的所有相同的東西(因爲循環列表本身並不是sabving數字)。我將編輯我的代碼,以便您可以解救鍛鍊。

希望它可以幫助幫助

+0

嘗試點擊生成,然後清理解決方案 – Taco2

+1

你期望行'Convert.ToInt32(other);'做什麼? –

+0

嘗試過,但它仍然相同 – Comp

回答

0

看起來像代碼的邏輯有一些問題。這裏是我想出來幫助你的僞代碼:

While (true) 
    if (quit) 
     //end program 
    if (over) 
     //print out the list of integers 
    else 
     if (input is not a number) 
      continue 
     if (number is not in list) 
      //add to list 
     else 
      //do nothing 

這應該有助於你重寫程序。

0

有人

var numbers = new List<int>(); 


while (true) 
     { 
      Console.WriteLine("enter a number or quit or over"); 
      var input = Console.ReadLine(); 

      if (input == "quit") 
      { 
       break; 
      } 

      if (input == "over") 
      { 
       var uniq = new List<int>(); 

       foreach (var value in numbers) 
       { 

        if (!uniq.Contains(value)) { 
         uniq.Add(value); 
        } 
       } 
       foreach (var numbr in uniq) { 
        Console.WriteLine(numbr); 

       } 
      } 
      else { 
       // inpout dodas v numbers 
       var conv = Convert.ToInt32(input); 
       numbers.Add(conv); 
      } 
     } 


      } 
} 

感謝之前檢查用戶是否已經輸入了「過」,你已經轉換的字符輸入數據,並將它們添加到列表。換句話說,您將ASCII碼字符值'o','v','e','r'添加到數字列表中。

移動「過度」檢查並確保它們不會添加到列表中:

while (true) 
{ 
    ...input stuff 
    if (input.ToLower() == "quit") 
    { 
     break; 
    } 

    if (input.ToLower() == "over") 
    { 
     ...make unique and report 
     continue; 
    } 

    foreach (var number in input) 
    { 
     var cifre = Convert.ToInt32(number); 
     numbers.Add(cifre); 
    } 
} 

這將解決您的列表中有這些相同數字的問題。您可能還希望替換foreach有:

int cifre; 
if (int.TryParse(input, out cifre)) 
{ 
    numbers.Add(cifre); 
} 
else 
{ 
    Console.WriteLine("Invalid input, type 'quit', 'over' or a numeric value"); 
} 

假設你想輸入一個數值每次。

+0

你能告訴我請我不明白我剛剛開始與c# – Comp

+0

現在我不顯示這些數字,但現在我沒有得到任何結果我將編輯我的帖子,所以你會選擇我現在的代碼 – Comp

+0

代碼添加數字現在位於'if(input.ToLower()==「over」)塊內部 - 它應該放置在外部。 '繼續'操作應該在'foreach'塊之後。 –