Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

C# - Dúvida com class

Oi pessoal, eu não sei se aqui é o lugar certo para isto, mas estou com uma dúvida em uma atividade que tenho que fazer e não estou conseguindo resolver. Se algum poder me ajudar agradeço muito!!!

O exercício é o seguinte:

Criar uma class chamada State
    •    Essa class deve ter propriedades para Name, Population, Democratic Votes, Republican Votes and Total Votes.
    •    Adicione um constructor que contém os nomes de Name e Population como parametros. 
    •    Adicione ToString() method onde mostre toda a data sobre o State.
    •    Adicione um method chamado GetWinner onde compara os votos e retorna uma string com Biden ou Trump como vencedor.
    Em Program.cs file
    •    Escreva um method que tenha a informção do State pelo usuário
    •    Crie quatro State objects usando method para que consiga o input, você pode usar as informações abaixo: 
    State > State 1, State 2, State 3, State 4
    Population > 10, 10, 10, 10
    Democratic > 10, 10, 10, 10
    Republican > 10.0, 10, 10, 10

    •    Display a informação formatada no console.
    •    Mostre uma pequena barra colorida, azul ou vermelha, dependendo do ganhador    

Essa é minha class

    //properties
    public string StateName { get; set; }
    public double StatePopulation { get; set; }
    public double DemocraticVotes { get; set; }
    public double RepublicanVotes { get; set; }
    public double TotalVotes { get; set; }

    //constructor
    public State(string stateName, double statePopulation)
    {
        StateName = stateName;
        StatePopulation = statePopulation;
        //DemocraticVotes = democraticVotes;
        //RepublicanVotes = republicanVotes;
    }

    //ToString method with all data
    public override string ToString()
        {
        return string.Format($"{StateName},{StatePopulation},{DemocraticVotes},{RepublicanVotes} - {GetWinner()}");
        }

    //GetWinner method
    public string GetWinner()
        {
        if (DemocraticVotes > RepublicanVotes)
            return "Trump";
        else
            return "Biden";
        }

E esse é meu program

    State e1 = GetStateData();
        State e2 = GetStateData();
        State e3 = GetStateData();
        State e4 = GetStateData();

        Console.WriteLine(e1);
        Console.WriteLine(e2);
        Console.WriteLine(e3);
        Console.WriteLine(e4);

    }
    static State GetStateData()
    {
        Console.Write("Please enter State name: ");
        string state = Console.ReadLine();

        Console.Write("Please enter State population: ");
        string population = Console.ReadLine();
        double npopulation = Convert.ToDouble(population);

        Console.Write("Please enter Democratic votes: ");
        string democratic = Console.ReadLine();
        double vdemocratic = Convert.ToDouble(democratic);

        Console.Write("Please enter Republican votes: ");
        string republican = Console.ReadLine();
        double vrepublican = Convert.ToDouble(republican);

        State e = new State(state, npopulation)
        {
            DemocraticVotes = vdemocratic,
            RepublicanVotes = vrepublican
        };

        return e;
3 respostas

Oi Lais,

Tudo bem?

Verifiquei as informações que você colocou, mas não ficou claro o que você não está conseguindo. Poderia detalhar?

Aguardo e fico à disposição.

solução!

Fiz o método assim:

using System.Text;

namespace Teste { public class State { public string Name { get; set; } public int Population { get; set; } public int DemocraticVotes { get; set; } public int RepublicanVotes { get; set; } public int TotalVotes { get; set; }

    public State(string name, int population)
    {
        Name = name;
        Population = population;
    }

    public override string ToString()
    {
        var builder = new StringBuilder();
        builder.AppendLine($"State: {Name}");
        builder.AppendLine($"Population: {Population}");
        builder.AppendLine($"Republicans: {RepublicanVotes}");
        builder.AppendLine($"Winner: {GetWinner()}");

        return builder.ToString();
    }
    public string GetWinner() => DemocraticVotes > RepublicanVotes ? "Trump" : "Biden";
}

}


No método Main fiz assim:

using System;

namespace Teste { class Program { static void Main(string[] args) { for (int i = 0; i < 4; i++) { GetStateData(); }

        Console.ResetColor();
        Console.WriteLine("Resultado final: \n");
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.WriteLine("Democratics: ".PadRight(democraticCount, '|'));

        Console.ResetColor();
        Console.WriteLine();
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine("Republicans: ".PadRight(republicCount, '|'));
        Console.ReadKey();
    }

    public static int count = 1;
    public static int democraticCount = 0;
    public static int republicCount = 0;

    public static void GetStateData()
    {
        Console.ResetColor();
        Console.Write($"Please enter {count}º State name: ");
        string state = Console.ReadLine();

        Console.Write($"Please enter {state} population: ");
        int population = Convert.ToInt32(Console.ReadLine());

        Console.Write("Please enter Democratic votes: ");
        int democratic = Convert.ToInt32(Console.ReadLine());

        Console.Write("Please enter Republican votes: ");
        int republican = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine();

        count++;
        democraticCount += democratic;
        republicCount += republican;

        var winner = new State(state, population) { DemocraticVotes = democratic, RepublicanVotes = republican };

        Console.ForegroundColor = democratic > republican ? ConsoleColor.Blue : ConsoleColor.Red;

        Console.WriteLine(winner);

        Console.ReadKey();
        Console.Clear();
    }
}

}

Não sei se é assim que foi pedido, mas foi isso que eu entendi

Oi pessoal, muito obrigada pela ajuda de voces!