Você está aqui: Java ::: Pacote java.io ::: Console |
Java para iniciantes - Como usar a classe Console da linguagem JavaQuantidade de visualizações: 9889 vezes |
A classe Console, que é definida no pacote java.io como public e final, fornece métodos para acessar o dispositivo de console baseado em caracteres associado com a máquina virtual Java (JVM) sendo executada no momento. Um objeto desta classe é obtido por meio de uma chamada ao método console() da classe System. Veja:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- import java.io.Console; public class Estudos { public static void main(String[] args) { // vamos obter o console para a JVM atual Console console = System.console(); // vamos testar se o console foi obtido com sucesso if(console != null){ System.out.println("Console obtido com sucesso"); } else{ System.out.println("Não foi possível obter o console"); } } } É importante observar que, durante a autoria desta dica (Maio/2012), não é possível obter um objeto da classe Console executando a aplicação dentro do Netbeans e/ou Eclipse, somente executando a aplicação a partir da linha de comando ou outros editores, tais como o JCreator. A razão disso é que, tanto o Netbeans quanto o Eclipse executam a janela de console como um processo de fundo, afim de obter sua saída e exibir em suas próprias janelas. Veja a posição desta classe na hierarquia de classes da plataforma Java: java.lang.Object java.io.Console O fato de a máquina virtual ter um console ou não depende da plataforma na qual ela está sendo executada, e também na forma que a JVM foi invocada. Se a máquina virtual é iniciada a partir de uma janela de linha de comando interativa sem redirecionar os fluxos de entrada e saída padrão, então o console existirá e estará conectado ao teclado e tela a partir da qual a JVM foi lançada. Se a máquina virtual é iniciada automaticamente, por exemplo, como um gerenciador de agendamento de tarefas em segundo plano, então ela, em geral, não terá um console. Se a JVM atual tiver um console, então este é representado por uma instância única da classe Console, que pode ser obtida por meio de uma chamada ao método console() da classe System. Se nenhum dispositivo de console estiver disponível, uma chamada a este método retornará o valor null. Operações de leitura e escrita são sincronizadas para garantir a atomicidade das operações críticas. Assim, as chamadas aos métodos readLine(), readPassword(), format() e printf(), assim como operações de leitura, formatação e escrita nos objetos retornados pelos métodos reader() e writer() poderão causar bloqueios em cenários de múltiplas threads. Chamar close() nos objetos retornados pelos métodos reader() e writer() não fechará os fluxos destes objetos. Os métodos de leitura da classe Console retornam null quando o fim do fluxo de entrada de console é alcançado, por exemplo, ao digitar control-D no Linux/Unix ou control-Z no Windows. Operações de leitura subsequentes terão sucesso se caracteres adicionais forem inseridos mais tarde no dispositivo de entrada do console. |
![]() |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Apostila Java para iniciantes - Como concatenar strings em Java usando o operador "+"Quantidade de visualizações: 4 vezes |
Strings, ou seja, palavras, frases e textos, são concatenadas em Java usando-se o operador de adição "+". Lembre-se: concatenar significa juntar, agrupar, mesclar, etc. Veja um exemplo completo no trecho de código a seguir: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- public class Estudos{ public static void main(String[] args){ String s1 = "Bom dia, "; String s2 = "meu caro amigo!"; String s3 = s1 + s2; System.out.println(s3); System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: Bom dia, meu caro amigo! |
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como usar o modificador final em classes, variáveis e métodos Java - Programação Orientada a Objetos em JavaQuantidade de visualizações: 13488 vezes |
O modificador final pode ser usado com classes, variáveis e métodos. É claro que o significado varia dependendo do uso. Por exemplo, ao marcarmos uma variável com o modificador final, estamos na verdade criando uma constante, ou seja, uma variável cujo conteúdo não pode ser alterado durante a execução do programa. Veja:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- public class Estudos{ static final int VALOR = 45; public static void main(String args[]){ // vamos tentar alterar o valor da // constante VALOR = 10; } } Ao tentarmos compilar este programa teremos a seguinte mensagem de erro: Estudos.java:7: cannot assign a value to final variable VALOR VALOR = 10; ^ 1 error Tenha em mente, porém, que quando uma variável marcada como final é uma referência a um objeto, é a referência que não poderá ser alterada. As propriedades do objeto para a qual ela aponta poderão sofrer alterações, exceto se estes também estiverem marcados como final. Quando aplicado a classes, o modificador final garante que a classe não poderá ser extendida, ou seja, não é possível criar uma classe derivada a partir de uma classe marcada como final. Veja: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // superclasse final class Pessoa{ public String nome; } // subclasse class Aluno extends Pessoa{ public String matricula; } public class Estudos{ public static void main(String args[]){ // Cria um objeto da classe Aluno Aluno a = new Aluno(); } } Ao tentarmos compilar este código teremos a seguinte mensagem de erro: Estudos.java:7: cannot inherit from final Pessoa class Aluno extends Pessoa{ ^ 1 error Um método marcado como final não pode ser sobrescrito. Veja um exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // superclasse class Pessoa{ protected String nome; public final String getNome(){ return this.nome; } } // subclasse class Aluno extends Pessoa{ // estamos sobrescrevendo o método // herdado da superclasse public final String getNome(){ return "Aluno: " + this.nome; } } public class Estudos{ public static void main(String args[]){ // Cria um objeto da classe Aluno Aluno a = new Aluno(); } } Ao tentarmos compilar este código teremos a seguinte mensagem de erro: Estudos.java:14: getNome() in Aluno cannot override getNome() in Pessoa; overriden method is final public final String getNome(){ ^ 1 error Resumindo: variáveis marcadas com final não poder sofrer alterações. Classes marcadas como final não podem ter classes derivadas. Métodos marcados como final não podem ser sobrescritos. |
Java ::: Dicas & Truques ::: Arquivos e Diretórios |
Como excluir um diretório em Java usando o método delete() da classe File - Curso de Java para iniciantesQuantidade de visualizações: 9611 vezes |
Em algumas situações nós precisamos excluir um ou mais diretórios a partir de nossos códigos Java. Para isso nós podemos usar o método delete() da classe File, no pacote java.io. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; import java.io.*; public class Estudos{ public static void main(String[] args){ File diretorio = new File("c:\\java"); if(diretorio.delete()){ System.out.println("Diretorio excluido com sucesso."); } else{ System.out.println("Não foi possivel excluir o diretorio"); } } } Ao executarmos este código nós teremos o seguinte resultado (assumindo que você tem um diretório chamado "c:\\java"): Diretorio excluido com sucesso. Lembre-se de que o método delete() da classe File só permitirá a exclusão do diretório se este estiver vazio. |
Java ::: Projetos Java Completos - Códigos Fonte Completos Java ::: Jogos (Games) |
Como criar um Jogo da Velha em Java - Jogo completo com código fonte comentado - Versão consoleQuantidade de visualizações: 6521 vezes |
Faça o download do código-fonte Jogo da Velha em Java Sobre o Jogo da Velha em Java O Jogo da Velha, também conhecido como Tic-Tac-Toe, é um dos joguinhos mais fáceis de se programar em Java. Além disso, ele possibilita uma boa oportunidade de se entender matrizes, a estrutura switch, os laços for e while, assim como a estrutura básica presente em praticamente todos os games. O Jogo da Velha em Java Console Neste código fonte eu demonstro como o Jogo da Velha pode ser criado em Java usando o modo console, ou seja, em formato texto. Penso que o entendimento da lógica é mais fácil em modo console. Uma vez que você tenha aprendido todos os passos envolvidos, você poderá reproduzí-lo em modo gráfico sem muitas dificuldades. A versão do jogo apresentado nesta dica é um jogador humano, ou seja, você, contra o computador. Não coloquei inteligência artificial nem aprendizado de máquina nos movimentos do computador. Usei apenas jogadas sorteadas. Fica como desafio você implementar jogadas inteligentes por parte do computador como forma de deixar o jogo ainda mais interessante. Por enquanto o objetivo é só o aprendizado mesmo. Antes de continuarmos, veja uma imagem demonstrando o jogo: ![]() Me mostra um pouco do código Para mostrar a simplicidade do código, veja o método que registra a jogada do jogador humano: // este método registra a jogada do jogador humano private static void jogadaHumano(char[][] tabuleiro) { int jogada; // para registrar a jogada do jogador humano // repete até que a jogada seja válida while (true) { // lê a jogada do humano System.out.print("\nSua jogada (1 a 9): "); jogada = Integer.parseInt(entrada.nextLine()); // este movimento é válido? if (movimentoValido(tabuleiro, jogada)){ break; } else{ // não é válido System.out.println("O número " + jogada + " não é um movimento válido."); } } // vamos registrar esse movimento registrarMovimento(tabuleiro, jogada, 'X'); } Os links para você baixar todas as versões deste projeto estão abaixo: 1) JOGOVELHAJC - Jogo da Velha em Java Console - NetBeans IDE - Faça o Download. Não se esqueça: Uma boa forma de estudar o código é fazendo pequenas alterações e rodando para ver os resultados. Outra opção é começar um projeto Java do zero e ir adicionando trechos do código fonte para melhor entendimento de suas partes. |
Java ::: Coleções (Collections) ::: Set (Conjunto) |
Como usar objetos da interface Set para representar a união de dois ou mais conjuntos na linguagem JavaQuantidade de visualizações: 4551 vezes |
Na teoria dos conjuntos, a união de dois ou mais conjuntos é o conjunto dos elementos que pertencem a pelo menos um destes conjuntos. Assim, seja A = {2, 5, 8, 19, 30} e B = {2, 3, 1, 30}. A união desses dois conjuntos é C = {1, 2, 3, 5, 8, 19, 30}. Na programação Java podemos representar a união de dois conjuntos usando objetos da interface Set e qualquer uma de suas implementações. Para este exemplo vou usar a classe TreeSet, que permite a ordenação dos elementos. Veja o código: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; public class Estudos{ public static void main(String[] args) { // primeiro conjunto Set<Integer> conjuntoA = new TreeSet<>(); conjuntoA.add(2); conjuntoA.add(5); conjuntoA.add(8); conjuntoA.add(19); conjuntoA.add(30); // segundo conjunto Set<Integer> conjuntoB = new TreeSet<>(); conjuntoB.add(2); conjuntoB.add(3); conjuntoB.add(1); conjuntoB.add(30); // vamos obter a união dos dois conjuntos Set<Integer> conjuntoC = uniao(conjuntoA, conjuntoB); // vamos exibir os elementos no conjunto C Iterator iterator = conjuntoC.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } } // método genérico que permite obter a união de dois conjuntos public static <T> Set<T> uniao(Set<T> conjA, Set<T> conjB){ // Primeiro o conjunto C recebe todos os elementos do conjunto A Set<T> conjC = new TreeSet<>(conjA); // Em seguida o conjunto C recebe todos os elementos do conjunto B. // Como um Set não aceita elementos duplicados, apenas os elementos // de B que ainda não estejam no conjunto C serão aceitos conjC.addAll(conjB); return conjC; } } Ao executarmos este código teremos o seguinte resultado: 1 2 3 5 8 19 30 |
Java ::: Coleções (Collections) ::: HashMap |
Como retornar a quantidade de mapeamentos (chave-valor) em um HashMap do Java usando o método size()Quantidade de visualizações: 7883 vezes |
Em algumas situações precisamos saber a quantidade de mapeamentos (chave-valor) contidos em um HashMap. Para isso nós podemos usar o método size(). Veja o exemplo:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- import java.util.*; public class Estudos{ public static void main(String[] args){ // vamos criar uma instância de HashMap HashMap<Integer, String> clientes = new HashMap<Integer, String>(); // vamos adicionar três chaves e seus valores clientes.put(new Integer(1), "Osmar J. Silva"); clientes.put(new Integer(2), "Salvador Miranda de Andrade"); clientes.put(new Integer(3), "Marcos da Costa Santos"); // vamos obter a quantidade de mapeamentos neste HashMap int quant = clientes.size(); // vamos exibir o resultado System.out.println("Este HashMap contém " + quant + " mapeamentos."); System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: Este HashMap contém 3 mapeamentos. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercício Resolvido de Java - Um programa que lê três números inteiros e mostra o maiorQuantidade de visualizações: 9595 vezes |
Pergunta/Tarefa: Faça um programa Java que solicita três números inteiros e mostra o maior deles. Exiba uma mensagem caso os três números não forem diferentes. Sua saída deverá ser parecida com: ![]() Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos solicitar os três números inteiros System.out.print("Informe o primeiro número: "); int num1 = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o segundo número: "); int num2 = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o terceiro número: "); int num3 = Integer.parseInt(entrada.nextLine()); // o primeiro número é o maior? if((num1 > num2) && (num1 > num3)){ System.out.println("O primeiro número é o maior"); } // o segundo número é o maior? else if((num2 > num1) && (num2 > num3)){ System.out.println("O segundo número é o maior"); } // o terceiro número é o maior? else if((num3 > num1) && (num3 > num2)){ System.out.println("O terceiro número é o maior"); } // os número não são diferentes else{ System.out.println("Os três números não são diferentes"); } System.out.println("\n"); } } |
Java ::: Classes e Componentes ::: JTable |
Java Swing Avançado - Como exibir imagens nas células de uma JTable em suas aplicações Java SwingQuantidade de visualizações: 14982 vezes |
Nesta dica mostrarei como criar uma classe personalizada que estende a classe JLabel e implementa a interface TableCellRenderer. O objetivo é fornecer esta JLabel ao método setCellRenderer() de uma das colunas da JTable e exibir uma imagem ou foto ao lado do conteúdo da célula. Veja o resultado da figura abaixo: ![]() E aqui está o código Java Swing completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; import javax.swing.*; import java.awt.*; import javax.swing.table.*; public class Estudos extends JFrame{ public Estudos(){ super("Exemplo de uma tabela simples"); // colunas da tabela String[] colunas = {"Nome", "Idade", "Sexo"}; // conteúdo da tabela Object[][] conteudo = { {"Osmar J. Silva", "32", "Masculino"}, {"Maria Clara Gomes", "19", "Feminino"}, {"Fernando Gomes", "15", "Masculino"}, {"Carlos Vieira", "40", "Masculino"} }; // constrói a tabela JTable tabela = new JTable(conteudo, colunas); // quero exibir imagens ao lado do texto da primeira coluna TableCellRenderer tcr = new Imagem(); TableColumn column = tabela.getColumnModel().getColumn(0); column.setCellRenderer(tcr); tabela.setPreferredScrollableViewportSize(new Dimension(350, 50)); Container c = getContentPane(); c.setLayout(new FlowLayout()); JScrollPane scrollPane = new JScrollPane(tabela); c.add(scrollPane); setSize(400, 300); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } class Imagem extends JLabel implements TableCellRenderer{ public Imagem(){ setOpaque(true); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){ Icon imagem = new ImageIcon("C:\\estudos_java\\icon.gif"); // certifique-se da existencia da imagem "icon.gif" antes de executar if(isSelected) setBackground(table.getSelectionBackground()); else setBackground(table.getBackground()); setIcon(imagem); setText(value.toString()); return this; } public void validate() {} public void revalidate() {} protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {} public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {} } |
Vamos testar seus conhecimentos em |
Características do concreto armado Os domínios de deformação em concreto armado são categorias que descrevem diferentes estados de deformação do material em relação às tensões aplicadas. Cada domínio corresponde a um comportamento específico do material e pode ser usado para entender como o concreto e o aço de reforço interagem sob diferentes condições de carga. Nesse sentido, assinale a alternativa que traz o domínio no qual as peças de concreto armado devem ser projetadas de modo a melhor aproveitar as resistências dos materiais. A) Domínio 1. B) Domínio 2. C) Domínio 3. D) Domínio 4. E) Domínio 5. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fundações |
Fundações diretas ou rasas As fundações diretas ou rasas são utilizadas em situações em que as camadas do solo sejam resistentes de forma suficiente para suportar as cargas da estrutura. Elas tornam possível a transmissão dessas cargas diretamente ao solo, pela base da fundação, que é dimensionada de forma a distribuir o peso da construção no solo para que a pressão sobre ele seja compatível com a sua resistência. Analise as sentenças a respeito das fundações rasas ou diretas: I - Transferem as cargas das estruturas para camadas subsuperficiais da terra. II - Em uma mesma edificação, é possível encontrar mais do que dois tipos diferentes de fundações, mesmo que sejam rasas ou profundas. III - O uso de fundações rasas será considerado uma técnica adequada quando o número de golpes do SPT for maior ou igual a 8 e a profundidade não ultrapassar 2m. Qual(is) está(ão) correta(s)? A) II. B) I. C) II e III. D) I e III. E) III. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
O código de ética profissional: Concorrência Em relação à concorrência perfeita, podemos dizer que se trata da competição pura. Essa estrutura sugere o funcionamento ideal ou equilibrado do mercado. A concorrência perfeita apresenta quatro características que a tornam o modelo econômico mais adequado. Assinale a alternativa que contém essas características. A) Baixo número de compradores e vendedores; produtos homogêneos; informações disponíveis; mobilidade. B) Elevado número de compradores e vendedores; produtos heterogêneos; informações disponíveis; mobilidade. C) Elevado número de compradores e vendedores; produtos homogêneos; informações confidenciais; mobilidade. D) Elevado número de compradores e vendedores; produtos homogêneos; informações disponíveis; mobilidade. E) Elevado número de compradores e vendedores; produtos homogêneos; informações disponíveis; fixidez. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Hidrologia |
Como é chamada a área de relevo mais elevado entre cursos de água contíguos e que serve para delimitação das bacias hidrográficas? A) Vale fluvial. B) Colúvio. C) Interflúvio. D) Planalto. E) Planície pluvial. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Python |
Qual o resultado da execução do seguinte código Python?valor = 5 for i in range(0, 4): valor++ print("O valor final é: {0} ".format(valor)) A) O valor final é: 8 B) O valor final é: 9 C) Erro de SyntaxError: invalid syntax na linha 3 D) O valor final é: 7 E) Erro de SyntaxError: invalid syntax na linha 2 Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |