Ir ao conteúdo
  • Cadastre-se

AdrianoSiqueira

Membros Plenos
  • Total de itens

    517
  • Registro em

  • Última visita

  • Qualificações

    N/D

Reputação

319

Informações gerais

  • Cidade e Estado
    São Paulo
  • Sexo
    Masculino

Meu Notebook

  • Sistema Operacional
    Linux Mint 19.3
  1. Opa, beleza? Valeu pela resposta, mas eu já conheço o conceito de classes abstratas. O meu problema é com a referência de elementos não estáticos. Vou postar um código levemente diferente: package code; public abstract class Teste { public static final Teste IMPLEMENTACAO_1 = new Teste() { @Override public void executar() { teste1(); } }; public static final Teste IMPLEMENTACAO_2 = new Teste() { @Override public void executar() { teste2(); } }; public static final Teste IMPLEMENTACAO_3 = new Teste() { @Override public void executar() { // Non-static method 'teste3()' cannot be referenced from a static context teste3(); } }; public abstract void executar(); public void teste1() {} protected void teste2() {} private void teste3() {} } Na classe acima, a IMPLEMENTACAO_3 não irá compilar devido ao problema de referência estática. Porém todas as implementações possuem essencialmente o mesmo código, com a única diferença ficando por conta do modificador de acesso da função chamada. Nesse caso, apenas a função privada gera o erro de compilação. E eu queria saber por que.
  2. E aí pessoal, tudo bem? public abstract class Teste { public static final Teste IMPLEMENTACAO_1 = new Teste() { @Override public void funcao() { // Non-static method 'falarPrivado()' cannot be referenced from a static context falarPrivado(); } }; public static final Teste IMPLEMENTACAO_2 = new Teste() { @Override public void funcao() { falarPublico(); } }; public abstract void funcao(); private String falarPrivado() { return "Falando privado"; } public String falarPublico() { return "Falando publico"; } } A classe acima está acusando o famoso erro de compilação sobre "um elemento não estático não poder ser referenciado por um estático". Mas analisando as duas funções "falar", vemos que elas possuem exatamente o mesmo código, mudando apenas o modificador de acesso. A questão é que apenas a função privada lança o erro. Alguém poderia me explicar como o modificador de acesso influencia nisso? Tipo, por que só a função privada dá problema? No meu ponto de vista, ambas as funções deveriam lançar esse erro. Desde já agradeço.
  3. Eu usaria um vetor, depois ordenaria esse vetor e por último imprimiria: #include <stdio.h> #include <stdlib.h> void imprimirCrescente(int a, int b, int c); void imprimirDecrescente(int a, int b, int c); void ordenar(int* vetor, int tamanho); int main() { int a = 20; int b = 10; int c = 20; imprimirCrescente(a, b, c); imprimirDecrescente(a, b, c); return EXIT_SUCCESS; } void imprimirCrescente(int a, int b, int c){ int vetor[3] = {a, b, c}; ordenar(vetor, 3); printf(" Crescente: ["); for (int i = 0; i < 3; i++) { printf("%i", vetor[i]); if (i + 1 < 3) { printf(", "); } } printf("] \n"); } void imprimirDecrescente(int a, int b, int c){ int vetor[3] = {a, b, c}; ordenar(vetor, 3); printf("Decrescente: ["); for (int i = 2; i >= 0; i--) { printf("%i", vetor[i]); if (i > 0) { printf(", "); } } printf("] \n"); } void ordenar(int* vetor, int tamanho) { for (int i = 0; i < tamanho - 1; i++) { for (int j = i+1; j<tamanho;j++) { if (vetor[i] > vetor[j]){ int temp = vetor[i]; vetor[i] = vetor[j]; vetor[j] = temp; } } } } Uma solução feia, mas funcional.
  4. Tente instalar um programa qualquer e veja se ele funcionar normalmente. Outra coisa, poderia tentar uma restauração do sistema para uma data anterior ao problema.
  5. Eu faria algo assim: package model; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; public class Agenda { private final List<Contato> contatoList; public Agenda() { this.contatoList = new ArrayList<>(); } public Agenda(Contato... contatos) { this(); } public final void adicionar(Contato... contatos) { Objects.requireNonNull(contatos, "Objeto null não é permitido."); contatoList.addAll(Arrays.asList(contatos)); } public final int contar() { return contatoList.size(); } public final List<Contato> listar() { return contatoList; } public final List<Contato> pesquisarNome(String nome) { Objects.requireNonNull(nome, "Objeto null não é permitido."); List<Contato> list = new ArrayList<>(); for (Contato contato : contatoList) { if (contato.getNome().toLowerCase().contains(nome.toLowerCase())) { list.add(contato); } } return list; } public final List<Contato> pesquisarEmail(String email) { Objects.requireNonNull(email, "Objeto null não é permitido."); List<Contato> list = new ArrayList<>(); for (Contato contato : contatoList) { if (contato.getEmail().toLowerCase().contains(email.toLowerCase())) { list.add(contato); } } return list; } public final List<Contato> pesquisarTelefone(String telefone) { Objects.requireNonNull(telefone, "Objeto null não é permitido."); List<Contato> list = new ArrayList<>(); for (Contato contato : contatoList) { if (contato.getTelefone().contains(telefone)) { list.add(contato); } } return list; } public final void remover(Contato contato) { Objects.requireNonNull(contato, "Objeto null não é permitido."); contatoList.remove(contato); } public final void remover(String nome) { Objects.requireNonNull(nome, "Objeto null não é permitido."); contatoList.removeIf(contato -> contato.getNome().equalsIgnoreCase(nome)); } public final void removerTodos() { contatoList.clear(); } } package model; import java.time.LocalDate; public class Contato { private String nome; private String email; private String telefone; private Endereco endereco; private LocalDate dataNascimento; private Grupo grupo; public Contato() { } public Contato(String nome, String email, String telefone, Endereco endereco, LocalDate dataNascimento, Grupo grupo) { this.nome = nome; this.email = email; this.telefone = telefone; this.endereco = endereco; this.dataNascimento = dataNascimento; this.grupo = grupo; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getTelefone() { return telefone; } public void setTelefone(String telefone) { this.telefone = telefone; } public Endereco getEndereco() { return endereco; } public void setEndereco(Endereco endereco) { this.endereco = endereco; } public LocalDate getDataNascimento() { return dataNascimento; } public void setDataNascimento(LocalDate dataNascimento) { this.dataNascimento = dataNascimento; } public Grupo getGrupo() { return grupo; } public void setGrupo(Grupo grupo) { this.grupo = grupo; } @Override public String toString() { return "Contato{" + "nome='" + nome + '\'' + ", email='" + email + '\'' + ", telefone='" + telefone + '\'' + ", endereco=" + endereco + ", dataNascimento=" + dataNascimento + ", grupo=" + grupo + '}'; } } package model; public class Endereco { private String rua; private String numero; private String bairro; private String cidade; private String estado; private String cep; public Endereco() { } public Endereco(String rua, String numero, String bairro, String cidade, String estado, String cep) { this.rua = rua; this.numero = numero; this.bairro = bairro; this.cidade = cidade; this.estado = estado; this.cep = cep; } public String getRua() { return rua; } public void setRua(String rua) { this.rua = rua; } public String getNumero() { return numero; } public void setNumero(String numero) { this.numero = numero; } public String getBairro() { return bairro; } public void setBairro(String bairro) { this.bairro = bairro; } public String getCidade() { return cidade; } public void setCidade(String cidade) { this.cidade = cidade; } public String getEstado() { return estado; } public void setEstado(String estado) { this.estado = estado; } public String getCep() { return cep; } public void setCep(String cep) { this.cep = cep; } @Override public String toString() { return "{" + "rua='" + rua + '\'' + ", numero='" + numero + '\'' + ", bairro='" + bairro + '\'' + ", cidade='" + cidade + '\'' + ", estado='" + estado + '\'' + ", cep='" + cep + '\'' + '}'; } } package model; public enum Grupo { AMIGO, CONHECIDO, FAMILIA, TRABALHO, DESCONHECIDO; } package controller; import model.Agenda; import model.Contato; import model.Endereco; import model.Grupo; import java.time.LocalDate; import java.time.Month; public class Principal { public static void main(String[] args) { Agenda agenda = new Agenda(); agenda.adicionar( new Contato("Contato 1", "contato_1@gmail.com", "(11) 1111-1111", new Endereco("Rua 1", "111", "Bairro 1", "Cidade 1", "Estado 1", "11111-111"), LocalDate.of(1991, Month.JANUARY, 1), Grupo.CONHECIDO), new Contato("Contato 2", "contato_2@gmail.com", "(22) 2222-2222", new Endereco("Rua 2", "222", "Bairro 2", "Cidade 2", "Estado 2", "22222-222"), LocalDate.of(1992, Month.FEBRUARY, 2), Grupo.AMIGO), new Contato("Contato 3", "contato_3@gmail.com", "(33) 3333-3333", new Endereco("Rua 3", "333", "Bairro 3", "Cidade 3", "Estado 3", "33333-333"), LocalDate.of(1993, Month.MARCH, 3), Grupo.FAMILIA), new Contato("Contato 4", "contato_4@gmail.com", "(44) 4444-4444", new Endereco("Rua 4", "444", "Bairro 4", "Cidade 4", "Estado 4", "44444-444"), LocalDate.of(1994, Month.APRIL, 4), Grupo.TRABALHO), new Contato("Contato 5", "contato_5@gmail.com", "(55) 5555-5555", new Endereco("Rua 5", "555", "Bairro 5", "Cidade 5", "Estado 5", "55555-555"), LocalDate.of(1995, Month.MAY, 5), Grupo.DESCONHECIDO) ); System.out.println(">> Listando"); agenda.listar().forEach(System.out::println); System.out.println("Quantidade = " + agenda.contar()); System.out.println("----------------------------"); System.out.println(">> Pesquisando nome"); agenda.pesquisarNome("contato").forEach(System.out::println); System.out.println("----------------------------"); System.out.println(">> Removendo nome"); agenda.remover("Contato 2"); System.out.println(">> Listando"); agenda.listar().forEach(System.out::println); System.out.println("Quantidade = " + agenda.contar()); System.out.println("----------------------------"); } }
  6. O ideal é ter provas... Quando ela estiver boa, faça um teste de velocidade. E quando você notar que está lenta, faça o teste de novo e compare os valores, se realmente houver discrepância, entre em contato com seu provedor e faça uma reclamação. Como seu provedor é da OI, provavelmente pode ser sobrecarga na rede. Esse problema acontece em que horário do dia? Essas empresas de telecomunicação não fazem os devidos investimentos em suas infraestruturas e quando muita gente usa ao mesmo tempo a rede arreia. Já cansei de ter esse tipo de problema com a Vivo, e só tive sossego quando mudei de provedor, contratei um que era especializado em internet, ou seja, somente internet, nada mais. Empresas desse tipo costumam prestar um serviço melhor, pois é a única "fonte de renda" dela, ao contrário da Oi, Claro, Vivo e etc, que se a internet estiver ruim, a empresa ganha dinheiro com telefone, celular, TV, etc...
  7. Aqui foi feito no Windows 7, mas o procedimento serve para todos. Youtube
  8. Não precisa de pendrive, é só abrir o gerenciador de discos do Windows e fazer por lá.
  9. Conecta ambos o HD e o SSD e põe para formatar. Na hora do particionamento, você zera os dois e manda instalar no SSD.
  10. Sua estruturação está complexa demais. Mas corrigindo o problema de forma pontual, lá na classe Agenda, mude essa função: public Contato buscarTelefoneContato(String telefone) { for (Contato contato : contatos) { if (contato.getTelefone().equals(telefone)) return contato; } return null; } Para isso: public Contato buscarTelefoneContato(String telefone) { for (Contato contato : contatos) { if (contato.getTelefone().getTelefone().equals(telefone)) return contato; } return null; }
  11. O que é cli? O que é ator? Não temos como saber do que se trata, sem ter acesso ao código fonte.
  12. Se estruturar seu projeto assim, fica mais fácil: package model; public class Produto { public long codigo; public String descricao; public double valor; public Produto() { } public Produto(long codigo, String descricao, double valor) { this.codigo = codigo; this.descricao = descricao; this.valor = valor; } public long getCodigo() { return codigo; } public void setCodigo(long codigo) { this.codigo = codigo; } public String getDescricao() { return descricao; } public void setDescricao(String descricao) { this.descricao = descricao; } public double getValor() { return valor; } public void setValor(double valor) { this.valor = valor; } @Override public String toString() { return "Produto{" + "codigo=" + codigo + ", descricao='" + descricao + '\'' + ", valor=" + valor + '}'; } } package model; import java.util.HashMap; import java.util.Map; public class Estoque { public Map<Produto, Integer> estoque; public Estoque() { this.estoque = new HashMap<>(); } public void adicionar(Produto produto, int quantidade) { quantidade = Math.abs(quantidade); if (estoque.containsKey(produto)) { estoque.replace(produto, estoque.get(produto) + quantidade); } else { estoque.put(produto, quantidade); } } public boolean vender(Produto produto, int quantidade) { quantidade = Math.abs(quantidade); if (!estoque.containsKey(produto) || estoque.get(produto) < quantidade) { return false; } else { estoque.replace(produto, estoque.get(produto) - quantidade); return true; } } } package controller; import model.Estoque; import model.Produto; public class Principal { public static void main(String[] args) { final Estoque estoque = new Estoque(); Produto produto1 = new Produto(1, "Produto 1", 11); Produto produto2 = new Produto(2, "Produto 2", 22); Produto produto3 = new Produto(3, "Produto 3", 33); Produto produto4 = new Produto(4, "Produto 4", 44); Produto produto5 = new Produto(5, "Produto 5", 55); // Dá erro porque o produto não está no estoque ainda if (estoque.vender(produto1, 1)) { System.out.println("Vendido " + 1 + " unidade de '" + produto1.descricao + "'."); } else { System.out.println("'" + produto1.descricao + "' não encontrado ou quantidade insuficiente."); } // Abastece o estoque estoque.adicionar(produto1, 10); estoque.adicionar(produto2, 10); estoque.adicionar(produto3, 10); estoque.adicionar(produto4, 10); estoque.adicionar(produto5, 10); // Tem quantidade suficiente if (estoque.vender(produto1, 2)) { System.out.println("Vendido " + 2 + " unidade de '" + produto1.descricao + "'."); } else { System.out.println("'" + produto1.descricao + "' não encontrado ou quantidade insuficiente."); } // Dá erro porque o estoque é insuficiente if (estoque.vender(produto1, 10)) { System.out.println("Vendido " + 10 + " unidade de '" + produto1.descricao + "'."); } else { System.out.println("'" + produto1.descricao + "' não encontrado ou quantidade insuficiente."); } } } Eu testei seu código, mas não vi o erro descrito. Apenas um fluxo estranho, provavelmente por não estar completo ainda.
  13. AdrianoSiqueira

    Java Laço de Repetição While

    Pode ser feito assim: package opcaoinvalida; import java.util.Scanner; public class ForcarOpcao { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int nivel; do { System.out.print("Digite o nível [ 1 | 2 | 3 ]: "); nivel = scanner.nextInt(); } while (nivel < 1 || nivel > 3); System.out.println("nivel = " + nivel); } } Ou assim: package opcaoinvalida; import java.util.Scanner; public class ForcarOpcao { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int nivel = 0; while (nivel < 1 || nivel > 3) { System.out.print("Digite o nível [ 1 | 2 | 3 ]: "); nivel = scanner.nextInt(); } System.out.println("nivel = " + nivel); } }
  14. Segue um exemplo de como fazer: package acharespaco; public class AcharEspaco { private static class Coordenada { public final int linha; public final int coluna; public Coordenada(int linha, int coluna) { this.linha = linha; this.coluna = coluna; } } public static void main(String[] args) { final char pt = '.'; char[][] matriz = new char[][]{ {pt, pt, pt}, {pt, pt, pt}, {pt, pt, pt} }; Coordenada coordenada; while ((coordenada = procurar(matriz, pt)) != null) { System.out.println("Encontrou [" + coordenada.linha + ", " + coordenada.coluna + "]"); } System.out.println("Acabaram os espaços livres."); } /** * Procura uma ocorrência de flag. * * @param matriz Onde deve ser procurado. * @param flag O que deve ser procurado. * * @return Instância de Coordenada contendo a posição de linha e coluna. Se não houver nenhuma ocorrência, é retornado null. */ private static Coordenada procurar(char[][] matriz, char flag) { Coordenada coordenada = null; boolean encontrou = false; for (int i = 0; i < matriz.length && !encontrou; i++) { for (int j = 0; j < matriz.length && !encontrou; j++) { if (matriz[i][j] == flag) { coordenada = new Coordenada(i, j); encontrou = true; matriz[i][j] = '-'; } } } return coordenada; } }
  15. Pode ser feito assim: package main; import java.util.Arrays; public class IncluirItem { public static void main(String[] args) { String[][] matriz = new String[2][2]; iniciar(matriz); System.out.println(inserir(matriz, "A") ? "Inseriu" : "Não coube"); System.out.println(inserir(matriz, "B") ? "Inseriu" : "Não coube"); System.out.println(inserir(matriz, "C") ? "Inseriu" : "Não coube"); System.out.println(inserir(matriz, "D") ? "Inseriu" : "Não coube"); System.out.println(inserir(matriz, "E") ? "Inseriu" : "Não coube"); System.out.println(remover(matriz, 0, 0) ? "Removeu" : "Não encontrou"); System.out.println(remover(matriz, 10, 10) ? "Removeu" : "Não encontrou"); System.out.println(inserir(matriz, "E") ? "Inseriu" : "Não coube"); } static private void iniciar(String[][] matriz) { for (String[] strings : matriz) { Arrays.fill(strings, ""); } } static private boolean inserir(String[][] matriz, String item) { boolean resultado = false; for (int i = 0; i < matriz.length && !resultado; i++) { for (int j = 0; j < matriz[i].length && !resultado; j++) { if (matriz[i][j] == null || matriz[i][j].equals("")) { matriz[i][j] = item; resultado = true; } } } return resultado; } static private boolean remover(String[][] matriz, int linha, int coluna) { if (linha > matriz.length || coluna > matriz[0].length) { return false; } matriz[linha][coluna] = ""; return true; } }

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

×
×
  • Criar novo...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!