Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C# / Tuto] Impossible d'appliquer l'opérateur

TP : Bonjour, c'est le Weekend

16 février 2017 à 15:36:02

Bonjour !

Je suis nouveau sur le forum et je participe actuellement au tuto sur le C#.

J'en suis actuellement au TP Bonjour, c'est le Weekend mais j'ai un gros problème que je ne comprend pas.

J'esperais donc avoir un peu d'aide de la part du forum.

Lorsque j'écrit mon code, j'ai toujours la même erreur : Impossible d'appliquer l'opérateur '>' (ou bien un autre opé) aux opérandes de type 'DayOfWeek' et 'int'. Ca m'embête car du coup je m'arrache les cheveux alors que ça devrait être super facile à la base.

Voici le code :

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;



namespace MaPremiereApplication2

{

    class Program

    {

        static void Main(string[] args)

        {

            if (DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 18 && DateTime.Now.DayOfWeek > 0 && DateTime.Now.DayOfWeek < 6)

            {

                Console.WriteLine("Bonjour " + Environment.UserName);

            }

            else if (DateTime.Now.Hour > 18 || DateTime.Now.Hour < 9 && DateTime.Now.DayOfWeek == 0 || DateTime.Now.DayOfWeek == 6)

            {

                Console.WriteLine("Bonsoir " + Environment.UserName);

            }

            else if (DateTime.Now.Hour >= 18 || DateTime.Now.Hour < 25 && DateTime.Now.DayOfWeek == 0 || DateTime.Now.DayOfWeek > 4)

            {

                Console.WriteLine("Bon week-end " + Environment.UserName);

            }



        }



        }



} 



-
Edité par AnthonyZKN 16 février 2017 à 15:38:06

  • Partager sur Facebook
  • Partager sur Twitter
16 février 2017 à 16:19:35

Bonjour

int day = (int)DateTime.Now.DayOfWeek;

C'est comme ceci que tu peux convertir un type DayOfWeek en int. Et le dimanche sera le jour 0.

  • Partager sur Facebook
  • Partager sur Twitter
16 février 2017 à 16:36:41

Mathieu Lamon a écrit:

Bonjour

int day = (int)DateTime.Now.DayOfWeek;

C'est comme ceci que tu peux convertir un type DayOfWeek en int. Et le dimanche sera le jour 0

AnthonyZKN a écrit:

Ce qui est bizarre, c'est que Visual Studio 2015 ne me signale pas la première fois mais signale uniquement en fin de ligne, à côté des parenthèses.

-
Edité par AnthonyZKN 16 février 2017 à 16:38:35

  • Partager sur Facebook
  • Partager sur Twitter
16 février 2017 à 16:40:05

Il ne te signal que une des deux fois que tu appelles DayOfWeek dans chaque ligne ? Et avec ma proposition aussi ?
  • Partager sur Facebook
  • Partager sur Twitter
16 février 2017 à 16:58:11

Bonjour,

Normalement, il te le souligne car il compare les types qui entourent l'opérande. Mais c'est vrai qu'il ne signale qu'une fois la fin de ligne et en plus il compile lorsque l'on met ça :

Voici un code en C :

if (DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 18 && DateTime.Now.DayOfWeek > 0 && (int)DateTime.Now.DayOfWeek < 6)

Bizarre...

EDIT : Enfait en lisant ça c'est logique :https://msdn.microsoft.com/fr-fr/library/system.datetime.dayofweek(v=vs.110).aspx Il est compris entre 0 et "Day". D'où la non présence d'erreur soulignée, vu qu'il n'y en a pas !

-
Edité par jule04 16 février 2017 à 17:00:56

  • Partager sur Facebook
  • Partager sur Twitter

Site personnel : Julien Gidel - AutoMatePHPresentation

16 février 2017 à 17:13:48

Mathieu Lamon a écrit:

Il ne te signal que une des deux fois que tu appelles DayOfWeek dans chaque ligne ? Et avec ma proposition aussi ?


Merci ! Du coup, en convertissant en int, ça marche. Mais j'avoue ne pas comprendre du tout ce qui s'est produit dans mon programme. Surtout au niveau de ce que me retourne DayOfWeek

jule04 a écrit:

Bonjour,

Normalement, il te le souligne car il compare les types qui entourent l'opérande. Mais c'est vrai qu'il ne signale qu'une fois la fin de ligne et en plus il compile lorsque l'on met ça :

Voici un code en C :

if (DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 18 && DateTime.Now.DayOfWeek > 0 && (int)DateTime.Now.DayOfWeek < 6) 

Bizarre...

EDIT : Enfait en lisant ça c'est logique :https://msdn.microsoft.com/fr-fr/library/system.datetime.dayofweek(v=vs.110).aspx Il est compris entre 0 et "Day". D'où la non présence d'erreur soulignée, vu qu'il n'y en a pas !

-
Edité par jule04 il y a 3 minutes

Merci ! Du coup je comprends un peu mieux !

J'ai un gros problème depuis que j'ai fait l'exercice !

Je ne peux plus rien lancer, le programme Bonjour XXX ne cesse de se lancer même quand j'ai complètement effacé le code et que j'ai redémarré le logiciel Visual Studio 2015.

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

using System.Numerics;

namespace MaPremiereApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int compteur;
            for (compteur = 0; compteur < 50; compteur++)
            {
                Console.WriteLine("Bonjour C#");
            }
        }

        }

}


-
Edité par AnthonyZKN 16 février 2017 à 17:34:50

  • Partager sur Facebook
  • Partager sur Twitter
16 février 2017 à 20:32:38

Lances-tu bien la bonne version (release/debug) ? Tu as essayé de rebuild ? Il te met un message d'erreur comme quoi il lance l'ancien build a cause d'une erreur ?

  • Partager sur Facebook
  • Partager sur Twitter

Site personnel : Julien Gidel - AutoMatePHPresentation

17 février 2017 à 0:13:26

jule04 a écrit:

Lances-tu bien la bonne version (release/debug) ? Tu as essayé de rebuild ? Il te met un message d'erreur comme quoi il lance l'ancien build a cause d'une erreur ?

Pourtant y'a aucun code erreur, j'appuie sur Déboguer > Exécuter sans déboguer, aucune erreur.
  • Partager sur Facebook
  • Partager sur Twitter
17 février 2017 à 9:03:40

Du coup, en convertissant en int, ça marche. Mais j'avoue ne pas comprendre du tout ce qui s'est produit dans mon programme. Surtout au niveau de ce que me retourne DayOfWeek

DayOfWeek est ce qu'on appelle une énumération. Rien de sorcier en fait. Elle est définie comme ceci :


public enum DayOfWeek {
Sunday = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,

}

</pre>

En faisant ça :

DayOfWeek today = DateTime.Today.DayOfWeek;
            Console.WriteLine("Today is {0}",
                today);

Il te retourne :

Today is Friday Et nous sommes effectivement bien vendredi.

Et si tu fais :

DayOfWeek today = DateTime.Today.DayOfWeek;
        Console.WriteLine("Today is {0}",
            (int)today);</code></pre>

Tu obtiens :

Today is 5

Par contre, un DayOfWeek.Friday te donnera "Friday" ;)

</pre>

-
Edité par jule04 17 février 2017 à 9:04:02

  • Partager sur Facebook
  • Partager sur Twitter

Site personnel : Julien Gidel - AutoMatePHPresentation

5 mars 2022 à 12:40:09

 J'ai aussi un problème, mais je suis nouveau sur Openclassroom et je ne sais pas créer de sujet

Je suis la chaine tuto unity fr et donc ducoup je fais come lui mais  un moment il se passe ça

using UnityEngine;

[RequireComponent(typeof(Rigidbody2D))]

public class PlayerMotor : MonoBehaviour

{

    private Vector3 velocity;

    private Rigidbody2D rb;

    private void Start()

    {

        rb = GetComponent<Rigidbody2D>();

    }

    public void Move(Vector3 _velocity)

    {

        velocity = _velocity;

    }

    private void FixedUpdate()

    {

        PerformMovement();

    }

    void PerformMovement()

    {

        if (velocity != Vector3.zero)

        {

            rb.MovePosition(rb.position + (velocity * Time.fixedDeltaTime));

        }

    }

}

Le truc c'est que ça me met que le + est ambigu pour un vector3 ou Vector2. Quelqu'un pourrait m'aider svp 

-
Edité par AmauryDeBellabre 5 mars 2022 à 12:46:17

  • Partager sur Facebook
  • Partager sur Twitter
5 mars 2022 à 16:40:36

Bonjour,

Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Pour plus d'informations, nous vous invitons à lire les règles générales du forum

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte -> bouton violet "Créer un sujet" en face de la pagination
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

-
Edité par Lamecarlate 5 mars 2022 à 16:41:10

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)