lsnkesp
Membro Pleno-
Posts
65 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que lsnkesp postou
-
Java Superclass, subclass (retorna true para todas as subclasses)
lsnkesp postou um tópico em Java/Android SDK
Gente, hoje fazendo uma atividade de Java, tive que fazer a vinculação entre o professor e o aluno, como ambos são autenticáveis, ambos estão na mesma lista. A minha dúvida é quanto ao método que eu estou utilizando, na minha mente estava sendo correto verificar se o array que estou usando naquela posição digitada no momento de vinculação, era um objeto de professor, no entanto, se eu cadastro diretor e coordenador (que também são autenticáveis e também estão nessa lista) e eu digito o ID desses que acabei de cadastrar, retorna true da mesma forma, mesmo não sendo um professor, alguém sabe me explicar porque isso ocorre? estou apanhando de uma coisa que pode parecer muito simples, mas é complicado p mim. Eu consegui resolver com a seguinte instrução: public String setAlunoProfessor(int i) { if(arrayAutenticaveis[i] instanceof Funcionario) { Funcionario f = (Funcionario) arrayAutenticaveis[i]; if(f.getClass().equals(Professor.class)) { return "É um professor"; } else { return "NÃO É UMA INSTÂNCIA DE PROFESSOR"; } } else { return "Não é um funcionário"; } } Lembrando que isso é apenas um teste que eu estava fazendo, mas ainda assim não entendi muito bem porque retorna true em todos esses casos. (Aliás, coordenador e diretor são extends de Professor, caso seja necessário saber). O meu caso é semelhante a este: https://www.ti-enxame.com/pt/java/como-verificar-se-uma-subclasse-e-uma-instancia-de-uma-classe-em-tempo-de-execucao/968109548/ -
Java Herança - Acesso de métodos que não estão na classe mãe, o que fazer?
lsnkesp respondeu ao tópico de lsnkesp em Java/Android SDK
@Felipecfk Sim, concordo. Mas no momento estou fazendo dessa forma, entendo que ficaria mais fácil do seu jeito, mas essa é uma das maneiras em que eu gostaria de saber como faria, neste caso. De qualquer forma, muito obrigada! @AdrianoSiqueira Obrigada, me ajudou muito. Nesse caso em que você está fazendo, o polimorfismo é mantido? (Só a nível de curiosidade, mesmo) - Vou ajeitar e qualquer coisa posto aqui! @JorgeGus Valeu, vou tentar aqui, fortaleceu demais! Opa, gente, fiz as alterações aqui, deu super certo. As duas soluções estão perfeitas, obrigada viu. Minha classe professor ficou assim: package model.funcionario; import java.util.HashMap; import java.util.Map; import model.aluno.Aluno; public class Professor extends Funcionario { Map<String, Aluno> listOrientacao = new HashMap<String, Aluno>(); public Professor(String nome, String CPF, Double salario) { super(nome, CPF, salario); } public Map<String, Aluno> getListOrientacao() { return listOrientacao; } @Override public Double getSalario() { double novoSalario = 0.0; if(listOrientacao.isEmpty()) { return super.getSalario(); } else { for (String m : listOrientacao.keySet()) { novoSalario += super.getSalario() * 0.01; } return novoSalario + super.getSalario(); } } } Agora está retornando da maneira que quero!!!!! Obrigada, inclusive, Adriano, pela sua ajuda também, com certeza também será um código útil para mim entender como funciona. -
Java Herança - Acesso de métodos que não estão na classe mãe, o que fazer?
lsnkesp postou um tópico em Java/Android SDK
Gente, tenho uma dúvida que pode parecer bem inútil, mas é bem confusa pra mim... Tô aprendendo herança e tenho as classes Funcionário e Professor, professor herda os atributos de funcionário mas tem uma lista de alunos ao qual ele vai orientar e um método chamado getBonificacao() que não faz parte da classe Funcionário, beleza até aí tudo certo... O que eu não tô sabendo é pegar a quantidade de gastos de todos os funcionários (tendo em vista que professor também é um), eu até consigo pegar através do método: public double mostrarGastosFuncionarios() { double totalGastosComFuncionarios = 0.0; for (String funcionarios : countObjetosFuncionarios.keySet()) if (funcionarios != null) totalGastosComFuncionarios += countObjetosFuncionarios.get(funcionarios).getSalario(); return totalGastosComFuncionarios; } Minha classe funcionário: package model.funcionario; public class Funcionario { protected String nome; protected String CPF; protected Double salario; public Funcionario(String nome, String CPF, Double salario) { this.nome = nome; this.CPF = CPF; this.salario = salario; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getCPF() { return CPF; } public void setCPF(String cPF) { CPF = cPF; } public Double getSalario() { return salario; } public void setSalario(Double salario) { this.salario = salario; } public String getRelatorio() { String relatorio = "Nome: " + getNome(); relatorio += "\nSalário: " + getSalario(); return relatorio; } } Minha classe professor: package model.funcionario; import java.util.HashMap; import java.util.Map; import model.aluno.Aluno; public class Professor extends Funcionario { Map<String, Aluno> listOrientacao = new HashMap<String, Aluno>(); public Professor(String nome, String CPF, Double salario) { super(nome, CPF, salario); } public Map<String, Aluno> getListOrientacao() { return listOrientacao; } public Double getBonificacao() { double novoSalario = 0.0; for (String m : listOrientacao.keySet()) { novoSalario += super.getSalario() * 0.01; } return novoSalario; } } Exemplo se eu cadastro dois professores com salário 2400, a soma retorna 4800 como o total de gastos, mas não retorna o total de gastos + a bonificação (essa bonificação, no caso, é que para cada aluno que o professor orienta, ele ganha 1% do salário), porém não está retornando a soma com essa bonificação, apenas o salário sendo somado. Alguém pode me ajudar? Se precisar de códigos, eu posso colocar aqui, só não sei o que exatamente devo anexar. porque quando eu quero retornar o total de gastos, o que inclui também a bonificação recebida de cada professor (se ele orientar pelo menos um aluno) e eu puxo o mapa de funcionários, não consigo pegar o método getBonificacao() justamente porque não está na classe funcionário e sim na sua classe filha (professor)... N tenho ideia do que fazer, aguardo retorno. -
@devair1010 Boa tarde (quase noite), confesso que eu não conhecia essa maneira, há algumas partes do código que eu não entendi, como essa: Especificamente a parte após o &&. Entendo que o isdigit verifica se o que foi digitado é um valor decimal. Estava dando uma pesquisada e consegui entender melhor para que serve o " label: goto label; " Também dei uma pesquisada no uso do fgets e percebi que realmente é mais vantajoso que o próprio "gets", além do scanf.
-
Boa noite, tô com uma dúvida, alguém pode me ajudar? Estou fazendo uma questão de controle de estoque, já está quase completo, o problema é que quando vai digitar o código do produto e sem querer digito um caractere no lugar de um inteiro, ele cria um looping.. como faria pra resolver? Segue anexo parte do código (se precisar dele inteiro, posso mandar): #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> int main () { int C[4], Q[4], repetido, N, x = 0; float PrecoUnitario[4]; while(x < 4) { printf("Codigo do Produto\n"); scanf("%d", &N); int y = 0; while(y < x) { if(N == C[y]){ repetido = 1; break; } y = y + 1; } if(repetido == 1) { printf("Codigo %d repetido, tente novamente.\n", N); repetido = 0; x = x - 1; } else { C[x] = N; printf("Estoque Disp.\n"); scanf("%d", &Q[x]); printf("Preco Unitario do Produto\n"); scanf("%f", &PrecoUnitario[x]); } x = x + 1; } system("cls"); // continua aqui Opa, consegui resolver fazendo o teste: int a = scanf("%d", &N); if (a == 0) { printf("\nErrado, digitou um caractere (Digite apenas n. inteiros).\n"); exit(0); } else { // continua
-
Virus payfast290 - Alguém conhece?
lsnkesp respondeu ao tópico de lsnkesp em Invasões, infecções, antivírus e afins
obrigado, desculpe se não foi apropriado, é o desespero mesmo. valeu. -
Virus payfast290 - Alguém conhece?
lsnkesp postou um tópico em Invasões, infecções, antivírus e afins
alguém ja passou por esse bendito vírus e conseguiu resolver? tô pra ficar maluca, todos os meus arquivos foram criptografados. -
@devair1010Ajuda em um trabalho escolar do meu curso de info., era apenas uma ideia de como fazer. Logo mais posto o que eu fiz.
-
Cálculo da série R, como faço isso? Questão: Escreva uma função que receba um parâmetro i inteiro e positivo, o qual representa o número de frações que serão somadas e receba um parâmetro x real e positivo informado pelo usuário no programa principal e retorne o resultado do cálculo da série R abaixo:
-
@AdrianoSiqueira Armazenei ele de acordo com as formas normais, separando rua, numero, bairro e cep, coloquei na tabela "Profissional" em que estou trabalhando, assim fica mais fácil a pesquisa. Pensei do mesmo jeito, mas imaginei que poderia ter outra forma, sem precisar digitar o nome do bairro, quem sabe? obrigado.
-
Como faço pra recuperar todas as pessoas que moram em um mesmo bairro? alguém me da um exemplo?
-
Java Como acessar o método de uma classe filha por meio da lista de funcionários
lsnkesp respondeu ao tópico de lsnkesp em Java/Android SDK
@AdrianoSiqueira Nossa eu amei, eu sempre tentei criar uma referência de subclasse dessa forma, mas sempre dava erro, não sabia que precisava colocar (nome da subclasse) para informar que sei o que estou chamando, eu so conseguia criar a referência se puxasse o construtor dele junto, e não era a intenção, porque eu apenas queria efetuar um login que era registrado no momento de cadastro das subclasses, então ficava fora de cogitação dessa forma. agora sei, graças a você que me indicou, com certeza vou assistir o resto, porque estudo sozinha, vai ser ótimo. -
Java Como acessar o método de uma classe filha por meio da lista de funcionários
lsnkesp respondeu ao tópico de lsnkesp em Java/Android SDK
Ola, muito obrigada pelos videos, me ajudaram muito. -
Java Como acessar o método de uma classe filha por meio da lista de funcionários
lsnkesp respondeu ao tópico de lsnkesp em Java/Android SDK
@AdrianoSiqueira certo, foi o que eu pensei. criar uma lista pra subclasse, onde é possível puxar seus metodos, uma vez que não esta na classe funcionário (classe abstrata), né? vou ver os videos, valeu. -
Java Como acessar o método de uma classe filha por meio da lista de funcionários
lsnkesp postou um tópico em Java/Android SDK
Boa noite, estou tendo uma confusão mental do que eu faria para poder acessar um método de uma subclasse, que não está na classe mãe, o que eu estou fazendo é uma lista de funcionarios que armazena todos as subclasses de funcionario (que é abstrata), entretanto, como eu faria para acessar um método da subclasse que não é possível acessar através dessa lista???? O que eu sei é que a classe mãe não conhece sua classe filha, no entanto, não sei o que fazer para isso. É a mesma coisa que eu querer acessar um getBonificacao() que nao existiria na classe funcionário, mas ainda estou muito ???? como eu faria isso sem precisar criar um objeto que sempre pega o construtor para ser digitado seus valores? no mais, eu apenas quero utilizar um contrato que fiz, por meio de interface, para poder atribuir para coordenador (extensão de professor), diretor (extensão de professor) e professor (extensão de funcionário) uma forma de autenticá-los, já que ambos são subclasses, porém, não existem na classe funcionário. OBS: não sei como fazer isso sem simplesmente não criar uma lista pra cada subclasse, o que acaba tirando o "proveito" de polimorfismo. Obrigado. -
Certo, muitíssimo obrigado.
-
AHHHHH, compreendi. Agora ficou assim: for (int i = 0; i < T; ++i) { if (i==T-1) { adicao[i] = vetor[0]+i; } else { adicao[i] = vetor[i+1]+i; } } printf("\n"); for (int i = 0; i < T; ++i) { printf("%d ", adicao[i]); } E agora?
-
@mauro_b como assim? isso eu não entendi. O que fiz foi somar o índice 0 com o conteudo da próxima posição, o índice 1 com o conteúdo da próxima e assim foi.
-
Ficou bem compreensivo o que você falou, obrigado. Fiz o seguinte: #include <stdio.h> #define T 5 int main(void) { int vetor[T], i = 0; double mediaMovel[T], media = 0.0; printf("Valor:\n"); while(i<5) { scanf("%d", &vetor[i]); if (vetor[i]<0) { break; } else { mediaMovel[i] += (double)vetor[i]; media += mediaMovel[i]; } i++; if (i==T-1) { printf("Media Movel: %.1lf\n", media/(T-1)); } } return (0); } O que achas? Na verdade, estava dando alguns erros, corrigi e ficou: #include <stdio.h> #define T 5 int main(void) { int vetor[T], i = 0; double mediaMovel[T], media = 0.0; printf("Valor:\n"); while(i<5) { scanf("%d", &vetor[i]); if (vetor[i]<0) { break; } else { mediaMovel[i] += (double)vetor[i]; media += mediaMovel[i]; } i++; if (i==T) { printf("Media Movel: %.1lf\n", media/T); } } return (0); }
-
Inicialmente eu entendi que era pra fazer a soma dos índices, mas achei meio?????? aí depois entendi exatamente dessa forma que você falou. Fiz da seguinte forma: int elemento = 0; for (int i = 0; i < T; ++i) { if (i==T-1) { elemento = i+vetor[0]; adicao+=elemento; } else { adicao+=(i+vetor[i+1]); } } printf("\nSoma: %d\n", adicao);
-
Alguém me ajuda, eu estou fazendo a média da forma correta? O problema: O que eu fiz: #include <stdio.h> int main(void) { int N, i=1, c = 0; double mediaMovel = 0.0; printf("Valor:\n"); while(i<=5) { scanf("%d", &N); if (N<0) { break; } else { c++; mediaMovel = (mediaMovel + N)/c; printf("Media Movel: %.1lf\n", mediaMovel); } i++; } return (0); } Estou fazendo a parte: Corretamente??? E quanto ao resto?
-
Então, o que devo fazer é somar o último índice com o primeiro elemento (valor da posição 0) ou com a posição (0)? Essa posição que quero dizer é o índice.
-
Boa noite, estou fazendo essa questão, mas não entendi o que o enunciado da letra e) quer dizer, alguém me ajuda? Já fiz todas as outras, que ficou: #include <stdio.h> #define T 5 int main(void) { int vetor[T], soma = 0, valor, d = 0; for (int i = 0; i < T; ++i) { scanf("%d", &vetor[i]); if(vetor[i]==0) { printf("Precisa ser > 0.\n"); scanf("%d", &vetor[i]); } } int ultimo = vetor[T-1]; for (int i = 0; i < T; ++i) { printf("%d ", vetor[i]); } for (int i = T-1; i > 0; --i) { vetor[i] = vetor[i-1]; } vetor[0] = ultimo; printf("\n"); for (int i = 0; i < T; ++i) { printf("%d ", vetor[i]); } printf("\nEntre com o valor inteiro.\n"); scanf("%d", &valor); for (int i = 1; i < T; ++i) { if (valor%vetor[i]==0) { d++; if (vetor[i]==1) { d--; } } } printf("\nNumero de ocorrencias de divisores desse valor (exceto o 1) no vetor: %d\n", d); return 0; } Agradeço se alguém der uma ideia.
-
Java Atributos obrigatorios precisam estar em um construtor?
lsnkesp respondeu ao tópico de lsnkesp em Java/Android SDK
@AdrianoSiqueira Foi isso que eu fiz mesmo, obrigada pela ajuda. -
Java Atributos obrigatorios precisam estar em um construtor?
lsnkesp respondeu ao tópico de lsnkesp em Java/Android SDK
Fiz isso via construtor, mas os outros atributos não precisam ser declarados como final.
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais