2014-10-09 70 views
1

嘿傢伙我一直試圖解決這個問題一段時間了。因爲我目前在我的大學(Cegep)的第一次會議,所以我是新編程的。 Visual Studio 2012似乎跳過我的代碼的一部分,我需要輸入1或2在rehaussement = Convert.ToChar(Console.Read()); 它不提示我輸入件事我得在調試部分沒有任何錯誤,這裏是我的代碼:`C#跳過我的代碼的一部分

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //1464649 - Benjamin Lam 
      int nbPhotos; 
      char format; 
      char reponse; 
      char rehaussement; 
      float prix; 

      //Début 

      Console.WriteLine("Entrez le nombre de photos que vous voulez développer :"); 
      nbPhotos = Convert.ToInt32(Console.ReadLine()); 
      Console.WriteLine("Quel format désirez-vous pour les photosÉ Entrez :"); 
      Console.WriteLine("p ou P pour petit format"); 
      Console.WriteLine("g ou G pour grand format"); 
      format = Convert.ToChar(Console.Read()); 
      Console.WriteLine("Désirez-vous un rehaussement pour les photos? Entrez: "); 
      Console.WriteLine("o ou O pour oui"); 
      Console.WriteLine("n ou N pour non"); 
      reponse = Convert.ToChar(Console.Read()); 

      if ((reponse == 'o') || (reponse == 'O')) 
      { 
       Console.WriteLine("Quel type de rehaussement désirez-vous? Entrez"); 
       Console.WriteLine("1 pour noir"); 
       Console.WriteLine("2 pour sepia"); 
       rehaussement = Convert.ToChar(Console.Read()); 
      } 
      else 
      { 
       rehaussement = '0'; 
      } 
      //calcul du total a payer 
      if (nbPhotos < 50) 
      { 
       if ((format == 'p') || (format == 'P')) 
       { 
        prix = (nbPhotos * 0.15f); 
       } 
       else 
       { 
        prix = (nbPhotos * 0.25f); 
       } 

       if (rehaussement == '1') 
       { 
        prix = prix + nbPhotos * 0.75f; 
       } 
       else 
       { 
        if (rehaussement == '2') 
        { 
         prix = prix + nbPhotos * 0.50f; 

        } 

       } 
      } 

      else 
      { 
       if (nbPhotos <= 100) 
       { 
        if ((format == 'p') || (format == 'P')) 
        { 
         prix = nbPhotos * 0.10f; 
        } 
        else 
        { 
         prix = nbPhotos * 0.20f; 
        } 

        if (rehaussement == '1') 
        { 
         prix = prix + nbPhotos * 0.75f; 
        } 
        else 
        { 
         if (rehaussement == '2') 
         { 
          prix = prix + nbPhotos * 0.50f; 
         } 
        } 
       } 
       else 
       { 
        if ((format == 'p') || (format == 'P')) 
        { 
         prix = nbPhotos * 0.08f; 
        } 
        else 
        { 
         prix = nbPhotos * 0.16f; 
        } 
        if (rehaussement == '1') 
        { 
         prix = prix + nbPhotos * 0.50f; 
        } 
        else 
        { 
         if (rehaussement == '2') 
         { 
          prix = prix + nbPhotos * 0.25f; 
         } 
        } 
       } 

      } 

      //affichage de resultat 

      Console.WriteLine("Le nombre de photos développées est " + nbPhotos); 
      if ((format == 'p') || (format == 'P')) 
      { 
       Console.WriteLine("Le format choisi est PETIT"); 
      } 
      else 
      { 
       Console.WriteLine("Le format choisi est GRAND"); 
      } 
      if (rehaussement == '1') 
      { 
       Console.WriteLine("Le rehaussemenet choisi est NOIR et BLANC"); 
      } 
      else 
      { 
       if (rehaussement == '2') 
       { 
        Console.WriteLine("Le rehaussement choisi est SEPIA"); 
       } 
       else 
       { 
        Console.WriteLine("Aucun rehaussement choisi"); 
       } 
      } 
      Console.WriteLine("Le prix à payer est" + prix + (" $")); 
      //Fin 
     } 
    } 
} 

` 我的大多數東西是法語,因爲我去法國學院(Cegep)。 希望有人能幫助我解決這個問題。

+1

有你嘗試'Console.ReadKey'來代替? – 2014-10-09 23:33:06

+0

我懷疑在控制檯上閱讀'響應'的上面一行沒有閱讀你認爲正在閱讀的內容。 – 2014-10-09 23:37:19

+0

@SteveG它應該。 'Read()'返回輸入字符的整型值。 – TyCobb 2014-10-09 23:38:51

回答

1

使用輸入行(),而不是閱讀():

format = Convert.ToChar(Console.ReadLine()); 
+4

這將如何解決OP的問題?換句話說,使用'ReadLine()'而不是'Read()'的原因是什麼? – Tim 2014-10-09 23:38:51

2

嘗試更改format = Convert.ToChar(Console.Read());以代替使用ReadLine。 的原因是由於該行爲是.Read沒有結束輸入流 - 按MSDN(見註釋部分) http://msdn.microsoft.com/en-us/library/system.console.read(v=vs.110).aspx

+4

這將如何解決OP的問題?換句話說,使用'ReadLine()'而不是'Read()'的原因是什麼? – Tim 2014-10-09 23:39:46