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

NÃO APRENDI NADA COM A RESPOSTA DO INSTRUTOR REFERENTE AO EXERCÍCIO 03 DA AULA 5

Quero detalhes de como foi feita o desafio desde o if até o método isData... Tem a questão do formata() e como ficaria o método mostra em funcionário... Na verdade estou confuso e sinceramente esperava mais deste curso em específico, como está bem no início da formação java tudo tem que ser explicado detalhadamente pois é de fato necessário e essencial para nós aprendizes não termos nenhum tipo de dúvida! Caso neste curso continue tendo este tipo de problema mesmo tendo pago dois anos adiantados vou procurar outra plataforma onde eu possa aprender de forma mais tranquila.

20 respostas

Alguma resposta sobre este questionamento?

Boa tarde, cara aconselho vc antes de começar com Java, fazer os cursos de logica de programação. Bons estudos.

Já fiz Maria e até gostei! Não fiz apenas o do alura mas também presencial.

Até agora não tive uma resposta satisfatória sobre o que disse mas continuou no aguardo!

Oi Renato, você pode falar aqui qual a sua dúvida? o fórum é um auxiliador do curso. Você pode até encontrar sua dúvida já respondida por aqui.

o que você não entendeu? copie e cole seu código aqui

Então Vânia obrigado por responder, meu código já postei no próprio sistema do alura ao término das questões! Na verdade não entendi nada do desafio acho que ele foi pouco detalhado e meio sem nexo para o que aprendemos até o presente momento. Se possível quero ele detalhado de forma obvia e clara e bem explicativo estou acompanhando o curso até aqui e estava gostando porém os desafios são pouco explicativos e isso dificulta o aprendizado outra coisa que percebi é que alguns execícios/desafios tem assuntos não dados ainda e ficam como prévia do mesmo, mas acaba dificulta o aprendizado ao meu ver. Detalhei um pouco a minha dúvida acima no primeiro post...

"Que alguns execícios/desafios tem assuntos não dados ainda "

Cara, em todo curso de programação a coisa funciona mais ou menos assim. O exercício faz parte do aprendizado, se o cara mostrar o algoritmo antes de pedir na atividade vc não força sua mente. É como uma musculação. Cara, de fato java é difícil pra começar logo após lógica, pois é uma linguagem robusta. Eu senti o mesmo que vc sentiu logo quando comprei o alura no ano passado. Fiz lógica e depois parti para C. Puts, entendi nada, achei o curso rápido de mais pra mim. De fato o alura tem essa característica de ser direto. Tive que interromper o curso de C e pegar um curso mais extenso de no youtuve e estudaar c++ pelo Deitel até matrizes. Era 60 exercícios por capítulo, fiz o mesmo com o livro de C de andré backes.

Enfim, senti muita dificuldade no início, pq programação é difícil mesmo, mas vc supera. De fato, se nao tivesse tido essa base, não teria aprendido de "boa" o java I do alura. Enfim, java é uma linguagem pesada e o método do alura, de fato, talvez seja muito ligeiro para oq vc espera nessa fase de aprendizado. Eu mesmo estou curtindo minha assinatura Alura numa boa, mas confesso que perdi 6 meses pegando uma base maior em outros cantos, como livro e Youtube.

Esse curso do Alura e o mesmo da CAELUM, que é super reconhecida no mercado. Vou te dar 2 conselhos. Pegue outro curso, como c#, JS ou PHP OU tente pegar a base de java desse curso:

Oi Renato

Eu posso tentar te ajudar! Só que eu não estou achando o desafio que você me passou. O exercício 3 da aula 5 do curso de java não se trata de desafio. Consegue passar o link do exercício aqui ? Assim fica melhor para te ajudar.

um abraço

A maior dificuldade que estou tendo também é que em um capítulo fazemos execícios e construirmos algumas classes dai passados vários capítulos o instrutor volta para aquela classe dada a mil anos atras e faz um monte de modificações e não mostra como fica as outras classes tanto a main e as outras por exemplo a que mostra(imprime o conteúdo) e etc, e isso atrapalha o aprendizado estou estudando agora por livros pois talvez não continue no alura...

De qualquer forma quero agradecer a todos que me responderam. Forte abraço a todos!

Oi Renato

Obrigado por colocar o link. Imagine que existe um sistema, em que o usuário tem que digitar a data, o usuário sem querer digita uma data que não existe, algo como 32/03 como o seu programa vai se comportar ? O desafio pede para você lidar com esse tipo de datas incorretas!.

Você pode começar criando uma classe com o método main para ir executando! Você pode colar o seu código se quiser aqui assim a gente vai melhorando ele.

um abraço

Oi Renato, o desafio é um desafio e dos bons, você tem que garantir que não sejam inseridas pelo usuário datas inconsistentes ex.:(00/02/2014; 30/02/2017; 32/12/2017) portanto deverá adicionar um tratamento na inserção dessas datas, pra que a data do dia por exemplo deve ser > 0 e dependendo do mês pode ser até 28, 30 ou 31. Isso pode ser feito de n maneiras se o algoritmo atende ao requisito pedido de tratar a data, perfeito!. A solução do instrutor é bem sucinta mas se a sua incluir muito mais código e tiver completamente diferente não está errada, é normal em um primeiro momento ter um código que funciona perfeitamente o qual você pode ir refinando ainda mais ao passo que entende melhor a lógica por trás das linhas. Acompanhemos a solução :

public class Data {

    public Data(int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;

        if (! isDataViavel(dia, mes, ano)) {
            System.out.println("A data " + formata() + " não existe!");
        }
    }

    private boolean isDataViavel(int dia, int mes, int ano) {
        if (dia <= 0 || mes <= 0) {
            return false;
        }

        int ultimoDiaDoMes = 31; // por padrao são 31 dias
        if (mes == 4 || mes == 6 || mes == 9 || mes == 11 ) {
            ultimoDiaDoMes = 30;
        } else if (mes == 2) {
            ultimoDiaDoMes = 28;
            if((ano % 400 == 0) || ((ano % 4 == 0) && (ano % 100 != 0))){
                ultimoDiaDoMes = 29;
            }
        }
        if (dia > ultimoDiaDoMes) {
            return false;
        }

        return true;
    }
}

Nessa solução ele refinou o código passando a data para ser tratada já no construtor que já verifica se a data não é viável caso ela realmente não seja já exibe a mensagem e pede uma nova inserção por exemplo. Esse formata() é apenas aquele método que arruma a data para ela aparecer certinha (xx/xx/xxxx).No método booleano

boolean isDataViavel

ele faz aqueles tratamentos sobre o dia como evitando que ele não seja nulo ou negativo por exemplo além de identificar pelo mês qual é a data limite daquele mês no mês de junho por exemplo temos apenas 30 dias o que faz com que a data 31/06 seja considerada inconsistente, certo! Caso a data fornecida não seja invalida ela vai retornar true. Detalhe aí fizemos todo esse código para tratar o dia, no entanto você poderia inserir mais lógica para não permitir que o mês seja inválido(<0 e >12). Esse é o tipíco algoritmo que não temos a solução pronta, vamos codificando e testando, fazendo validações pra verificar se apenas as datas corretas estão passando. Ao fim temos o código completo.

Caso persista alguma dúvida a respeito desse desafio ou curso pode perguntar aqui mesmo ou se você não tiver mais nenhuma dúvida a respeito você pode marcar uma resposta como solução, finalizando assim esse tópico.Espero ter ajudado. Bons estudos.

Olá.

Renato, uma coisa a se notar é que, aparentemente, sua dificuldade tem sido mais com a lógica de determinados métodos do que com a linguagem em si. Pelo que percebi, você não entendeu como o método isDataViavel() trata se uma data é viável. É isso mesmo? Postando aqui o que você entendeu e o que não entendeu vai dar uma margem melhor pra gente te ajudar. O importante é você acabar entendendo.

E o método formata() onde ele está?

Como eu disse acima é apenas aquele método que devolve a data no formato correto, que outrora estava sendo chamada de getFormatada()

String getFormatada(int dia, int mes, int ano){
        return (""+this.dia+"/"+this.mes+"/"+this.ano);
    }
String formata(int dia, int mes, int ano){
        return (""+this.dia+"/"+this.mes+"/"+this.ano);
    }
String getDataFormatada(int dia, int mes, int ano){
        return (""+this.dia+"/"+this.mes+"/"+this.ano);
    }

que retorna a data como String para ser usada na frase. ("A data " + formata() + " não existe!");

Fiz desta forma mas não funciona! Depois vou postar quando estiver em casa da forma que fiz e que deu certo.

Pesquisei e consegui por para rodar, mas estou com uma dúvida referente ao prefixo is nas aulas não ficou bem esclarecido esta parte... Quero saber para que serve e se é uma boa prática utilizá-lo. Quero se possível um documento em pdf ou link que explique sobre esta opção e tal... Estou fazendo mil perguntas pois não quero me tornar um mau programador e também porque não gosto de ter dúvidas em nada sempre corro atrás para que isso nunca ocorra. ???

Queria antes de tudo agradecer a todos os profissionais da Aluna o Paulo Silveira, Guilherme Silveira, Maurício Aniche, aos que me responderam neste post, enfim todos envolvidos... Quero também pedir desculpas pela forma insolente do meu post estava meio chateado querendo desistir de "tudo" rssr no caso o Java. Forte abraço a todos e um cheiro baiano!

solução!

Oi Renato

Obrigado pelo feedback. Vi que sobrou algumas algumas dúvidas, sugiro que abra uma nova dúvida, já que essa ficou gigante e já tem um monte de feedback sobre outros problemas que você teve, tudo bem ?

abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software