2015-09-22 4 views
0

Première question. Tout conseil aide.Conseil en matière de température

Ceci est pour une classe bien que j'essaie de comprendre par moi-même. J'ai des problèmes avec les erreurs de syntaxe dans mon codage. Le but de cette application console est de permettre à l'utilisateur d'entrer une température et d'avoir une recommandation quant aux vêtements nécessaires (par ex. "Mettre une veste légère").

J'ai fait l'application de conversion de température avant cela et ajouté mon code dans l'application de conseil. J'ai regardé d'autres exemples et n'ai pas trouvé d'exemples concis pour des déclarations if ... else comme celle-ci.

Je pensais que l'erreur était parce que la variable n'était pas booléenne, mais je n'ai aucune idée de la façon de la convertir en booléen pour seulement les instructions if else.

C'est ce que j'ai jusqu'à présent:

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

namespace ConsoleF_to_C_App 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //declare a char variable to store the degree symbol 
      char chrDegree = (char)176; 

      //display program info 
      Console.WriteLine("Temperature Conversions with Advice (v.1) Sept 17, 2015"); 
      Console.WriteLine("-------------------------------------------------------\n\n"); 
      //prompt user to enter the temperature in F 
      Console.Write("Enter today's temperature in {0} F (eg 60): ", chrDegree); 

      //read in the user input 
      string strF = Console.ReadLine(); 

      //declare two doubles to store F and C temperature 
      double dblF, dblC; 

      //convert input from string to double 
      dblF = Convert.ToDouble(strF); 

      //calculate celsius using fahrenheit 
      dblC = (dblF - 32) * 5/9; 

      Console.WriteLine("\n\nToday's Temperature: {0:F2}{1} F = {2:F2}{1} C \n\n", 
       dblF, chrDegree, dblC); 

      double temp = double.Parse(Console.ReadLine()); 

      //if the user enters < 40 
       if (temp < 40) 
      { 
       Console.WriteLine("\n\nIt is very cold. Put on a heavy coat."); 
      } 

      else if 
      { 
       (temp > 40 || temp < 60) 
       Console.WriteLine("\n\nIt is cold. Put on a coat."); 
      } 
      else if 
      { 
       (temp >= 60 || temp < 70) 
       Console.WriteLine("\n\nThe temperature is cool. Put on a light jacket."); 
      } 
      else if 
      { 
       (temp >= 70 || temp < 80) 
       Console.WriteLine("\n\nThe temperature is pleasant. Wear anything you like."); 
      } 
      else if 
      { 
        (temp >= 80 || temp < 90) 
       Console.WriteLine("\n\nThe temperature is warm. Wear short sleeves."); 
      } 
      else if 
      { 
       (temp >= 90) 
       Console.WriteLine("\n\nIt is hot. Wear shorts today."); 
      } 

      Console.WriteLine("Thank you for using the Temperature Conversion Application.\n\n"); 
      //ask if the user wants to continue 
      Console.Write("Do you want to continue Y/N ? "); 
      //reads in the user input 
      strContinue = Console.ReadLine(); 
      Console.WriteLine("\n\n"); 

      //if the user enters N or n 
      if (strContinue == "N" || strContinue == "n") 
      { 
      //set the bool variable to false 
      boolContinue = false; 
      } 
      //otherwise 
      else 
      { 
      //set the boolean variable to true 
      boolContinue = true; 
      } 

      Console.ReadKey(); 

     } 
    } 
} 
+1

J'ai laissé ma boule de cristal à la maison - quelle est l'erreur de syntaxe que vous voyez? – Tim

+0

strContinue n'est pas défini? –

Répondre

0

Vous obtenez une erreur de syntaxe à ces points.

else if 
{ 
    (temp > 40 || temp < 60) 
    Console.WriteLine("\n\nIt is cold. Put on a coat."); 
} 

La syntaxe est if(expression) { /* ... */ }, de sorte que le ( à aller directlyafter le if. Ceci est correct:

else if (temp > 40 || temp < 60) 
{ 
    Console.WriteLine("\n\nIt is cold. Put on a coat."); 
} 

En outre, vous avez oublié de déclarer cette variable comme string.

strContinue = Console.ReadLine(); 

Et vous ne définissez correctement cette valeur booléenne true ou false, de sorte que vous aurez juste besoin de déplacer la déclaration du bool boolContinue = true; au début de la fonction Main(), l'enveloppe tout votre code existant dans un while(boolContinue) expression.

0

Un problème que vous avez est vos comparaisons.

else if 
{ 
    (temp >= 90) 
    Console.WriteLine("\n\nIt is hot. Wear shorts today."); 
} 

doit être ...

else if (temp >= 90) 
{ 
    Console.WriteLine("\n\nIt is hot. Wear shorts today."); 
} 
0

Merci à Maximilien, je l'ai élaboré.

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

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      //declare a char variable to store the degree symbol 
      char chrDegree = (char)176; 
      Boolean boolContinue = true; 
      string strContinue; 
      //declare two doubles to store F and C temperature 
      double dblF, dblC; 


      while (boolContinue == true) 
      { 

       //display program info 
       Console.WriteLine("Temperature Conversions with Advice (v.1) Sept 17, 2015"); 
       Console.WriteLine("-------------------------------------------------------\n\n"); 
       //prompt user to enter the temperature in F 
       Console.Write("Enter today's temperature in {0} F (eg 60): ", chrDegree); 

       //read in the user input 
       string strF = Console.ReadLine(); 


       //convert input from string to double 
       dblF = Convert.ToDouble(strF); 

       //calculate celsius using fahrenheit 
       dblC = (dblF - 32) * 5/9; 

       Console.WriteLine("\n\nToday's Temperature: {0:F2}{1} F = {2:F2}{1} C \n\n", 
        dblF, chrDegree, dblC); 

       //if the user enters < 40 
       if (dblF < 40) 
       { 
        Console.WriteLine("\n\nIt is very cold. Put on a heavy coat."); 
       } 

       else if (dblF > 40 && dblF < 60) 
       { 
        Console.WriteLine("\n\nIt is cold. Put on a coat."); 
       } 

       else if (dblF >= 60 && dblF < 70) 
       { 
        Console.WriteLine("\n\nThe temperature is cool. Put on a light jacket."); 
       } 

       else if (dblF >= 70 && dblF < 80) 
       { 
        Console.WriteLine("\n\nThe temperature is pleasant. Wear anything you like."); 
       } 

       else if (dblF >= 80 && dblF < 90) 
       { 
        Console.WriteLine("\n\nThe temperature is warm. Wear short sleeves."); 
       } 

       else if (dblF >= 90) 
       { 
        Console.WriteLine("\n\nIt is hot. Wear shorts today."); 
       } 

       Console.WriteLine("Thank you for using the Temperature Conversion Application.\n\n"); 
       //ask if the user wants to continue 
       Console.Write("Do you want to continue Y/N ? "); 
       //reads in the user input 
       strContinue = Console.ReadLine(); 
       Console.WriteLine("\n\n"); 

       //if the user enters N or n 
       if (strContinue == "N" || strContinue == "n") 
       { 
        //set the bool variable to false 
        boolContinue = false; 
       } 
       //otherwise 
       else 
       { 
        //set the boolean variable to true 
        boolContinue = true; 
       } 

       Console.ReadKey(); 
      } 

     } 
    } 
} 

^^^ Cela fonctionne, merci!