user6032287
user6032287

Reputation:

Paper Scissors Rock using switches Visual Studio

I am relatively new to coding on c# and just wondering why I get a red underline on my "Else" line. can anyone help me??

class Program
{
    static void Main()
    {
        string temp;
        int number;
        char computer = ' ', answer;

        Random rand = new Random();

        Console.WriteLine("Press p for paper, s for scissor or r for rock");
        temp = Console.ReadLine();
        answer = Convert.ToChar(temp);
        number = rand.Next(3);

        switch (number)
        {
            case 1:
                computer = 'p';
                Console.WriteLine("CPU chose paper");
                break;

            case 2:
                computer = 's';
                Console.WriteLine("CPU chose scissors");
                break;

            case 3:
                computer = 'r';
                Console.WriteLine("CPU chose rock");
                break;
        }
        if (answer == computer)    
        {
            Console.WriteLine("Draw");
        } 
        else if (((answer == 'r')&&(computer == 's'))
               ||((answer == 's')&&(computer == 'p'))
               ||((answer == 'p')&&(computer == 'r')))
        {
            Console.WriteLine("You have won");
        }
        else (((answer == 's')&&(computer == 'r'))
            ||((answer == 'p')&&(computer == 's'))
            ||((answer == 'r')&&(computer == 'p')))
        {
            Console.WriteLine("You have lost");
        }   

        Console.ReadLine();
    }
}

Upvotes: 0

Views: 1348

Answers (2)

Umamaheswaran
Umamaheswaran

Reputation: 3878

You cant have conditions in else. I have converted your else with else if. below is corrected code

class Program
    {
        static void Main()
        {
            string temp;
            int number;
            char computer = ' ', answer;

            Random rand = new Random();

            Console.WriteLine("Press p for paper, s for scissor or r for rock");
            temp = Console.ReadLine();
            answer = Convert.ToChar(temp);
            number = rand.Next(3);

            switch (number)
            {
                case 1:
                    computer = 'p';
                    Console.WriteLine("CPU chose paper");
                    break;

                case 2:
                    computer = 's';
                    Console.WriteLine("CPU chose scissors");
                    break;

                case 3:
                    computer = 'r';
                    Console.WriteLine("CPU chose rock");
                    break;
            }
            if (answer == computer)
            {
                Console.WriteLine("Draw");
            }
            else if (((answer == 'r') && (computer == 's')) || ((answer == 's') && (computer == 'p')) || ((answer == 'p') && (computer == 'r')))
            {
                Console.WriteLine("You have won");
            }
            else if
                (((answer == 's') && (computer == 'r')) || ((answer == 'p') && (computer == 's')) || ((answer == 'r') && (computer == 'p')))
            {
                Console.WriteLine("You have lost");

            }
            else
            {
                Console.WriteLine("In conclusive");
            }
            Console.ReadLine();


        }
    }

Upvotes: 1

Thorsten Dittmar
Thorsten Dittmar

Reputation: 56717

The else alone can't take a condition. To check a condition you need another if clause in the else branch:

if (condition) {
   ... 
} 
else if (other condition) 
{
   ... 
} 

Upvotes: 0

Related Questions