0% acharam este documento útil (0 voto)
62 visualizações18 páginas

Apostila de Java

apostila

Enviado por

Patrícia Mendes
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
62 visualizações18 páginas

Apostila de Java

apostila

Enviado por

Patrícia Mendes
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 18

Estrutura básica (main)

Estrutura básica

Classes tem o mesmo nome do arquivo.java.


– Primeira letra Maiuscula;
– NomesComposto;
– Nao inicia-se com numeros!

Método inicia-se com letra minúscula.


– Ex: fazerCadastro, ligarCarro.
– Não utilizar palavras reservadas!

Tipos Primitivos
Tipos Primitivos: Cast
Implícito
– Tipo maior recebe tipo menor:
– int = byte

Explicito
– Conversão:
– int = (int) long

Tipos Primitivos: Wrapper Class

Empacotadores de tipos primitivos.

• Integer idade = new Integer(34);

• Byte b = idade.byteValue();

• int n = Integer.parseInt("123"); //Método estático

• int c = Integer.valueOf("11101", 2); //Bases

Variáveis e Constantes
Uma variável é uma posição na memória do computador na qual um valor pode
ser armazenado para utilização posterior em um programa. Todas as variáveis
Java devem ser declaradas com um nome e um tipo antes que elas possam ser
utilizadas. O nome de uma variável permite que o programa acesse o valor dela
na memória. O nome de uma variável pode ser qualquer identificador válido —
mais uma vez, uma série de caracteres consistindo em letras, dígitos,
sublinhados (_) e sinais de cifrão ($) que não comecem com um dígito e não
contenham espaços. O tipo de uma variável especifica o tipo de informação
armazenada nessa posição na memória. Como ocorre com outras instruções, as
instruções de declaração terminam com um ponto e vírgula (;).

• Evitar abreviações!
String nomeProfessor = "Patricia";
int idade = 23;
• Garbage Collector:
– Quando variáveis de referência não são mais
utilizadas, são removidas.

• Constantes:
– Modificador final.
– Dados estáticos.
– Utilizar todas maiúsculas!
final int DURACAO_AULA = 50;

Entrada e saída de dados


• Saídas:
– (java.lang) → Modo texto
System.out.println(valor);
– (javax.swing.JOptionPane) → Modo gráfico
JOptionPane.showMessageDialog(null, "Boa
aula");

• Entradas:
– (java.util.Scanner) → Modo texto
Scanner s = new Scanner(System.in);
String nome = s.nextLine();
– (javax.swing.JOptionPane) → Modo gráfico
String nome = JOptionPane.showInputDialog
("Digite seu nome");

Operadores
Podem ser (em relação a quantidade de operandos):
– Unários,
– Binários
– Ternários.

Operadores matemáticos;
Operadores de comparação;
Operadores lógicos;
Operadores de atribuição;
Operadores especiais.

Métodos e classes

Vamos usar nosso exemplo do carro para introduzir alguns conceitos


fundamentais da programação orientada a objetos. Para realizar uma tarefa em
um programa é necessário um método. O método armazena as declarações do
programa que, na verdade,
executam as tarefas; além disso, ele oculta essas declarações do usuário, assim
como o pedal do acelerador de um carro oculta do motorista os mecanismos
para fazer o veículo ir mais rápido. No Java, criamos uma unidade de programa
chamada classe para armazenar o conjunto de métodos que executam as tarefas
dela. Por exemplo, uma classe que representa uma conta bancária poderia
conter um método para fazer depósitos de dinheiro, outro para fazer saques e
um terceiro para perguntar qual é o saldo atual. Uma classe é similar em termos
do conceito aos desenhos de engenharia de um carro, que armazenam o projeto
de um pedal de acelerador, volante etc.

Instanciação
Assim como alguém tem de fabricar um carro a partir dos desenhos de
engenharia antes que possa realmente dirigi-lo, você deve construir um objeto
de uma classe antes que um programa possa executar as tarefas que os
métodos da classe definem. O processo para fazer isso é chamado instanciação.
Um objeto é então referido como uma instância da sua classe.

Reutilização
Assim como os desenhos de engenharia de um carro podem ser reutilizados
várias vezes para fabricar muitos carros, você pode reutilizar uma classe muitas
vezes para construir vários objetos. A reutilização de classes existentes ao
construir novas classes e programas economiza tempo e esforço. Também ajuda
a construir sistemas mais confiáveis e eficientes, porque classes e componentes
existentes costumam passar por extensos testes, depuração e ajuste de
desempenho. Assim como a noção das partes intercambiáveis foi crucial para a
Revolução Industrial, classes reutilizáveis são fundamentais para a revolução de
software que foi estimulada pela tecnologia de objetos.

Herança
Uma nova classe de objetos pode ser criada convenientemente por meio de
herança — ela (chamada subclasse) começa com as características de uma
classe existente (chamada superclasse), possivelmente personalizando-as e
adicionando aspectos próprios. Na nossa analogia do carro, um objeto da classe
“conversível” decerto é um objeto da classe mais geral “automóvel”, mas,
especificamente, o teto pode ser levantado ou baixado.

Interfaces
O Java também suporta interfaces — coleções de métodos relacionados que
normalmente permitem informar aos objetos o que fazer, mas não como fazer
(veremos uma exceção a isso no Java SE 8). Na analogia do carro, uma interface
das capacidades “básicas de dirigir” consistindo em um volante, um pedal de
acelerador e um pedal de freio permitiria que um motorista informasse ao carro
o que fazer. Depois que você sabe como usar essa interface para virar, acelerar
e frear, você pode dirigir muitos tipos de carro, embora os fabricantes possam
implementar esses sistemas de forma diferente. Uma classe implementa zero ou
mais interfaces — cada uma das quais pode ter um ou mais métodos —, assim
como um carro implementa interfaces separadas para as funções básicas de
dirigir, controlar o rádio, controlar os sistemas de aquecimento, ar-condicionado
e afins. Da mesma forma que os fabricantes de automóveis implementam os
recursos de forma distinta, classes podem implementar métodos de uma
interface de maneira diferente. Por exemplo, um sistema de software pode incluir
uma interface de “backup” que ofereça os métodos save e restore. As classes
podem implementar esses métodos de modo diferente, dependendo dos tipos
de formato em que é feito o backup, como programas, textos, áudios, vídeos etc.,
além dos tipos de dispositivo em que esses itens serão armazenados.

Comentando programas

Inserimos comentários para documentar programas e aprimorar sua legibilidade.


O compilador Java ignora os comentários, portanto, eles não fazem o
computador realizar qualquer ação quando o programa é executado.

Declarando uma classe

public class Welcome1

Começa uma declaração de class para a classe Welcome1. Todo programa


Java consiste em pelo menos uma classe que você (o programador) define. A
palavra-chave class introduz uma declaração de classe e é imediatamente
seguida pelo nome da classe (Welcome1). Palavras-chave (às vezes chamadas
de palavras reservadas) são reservadas para uso pelo Java e sempre escritas
com todas as letras minúsculas.

Nomes e identificadores de classe

Por convenção, os nomes de classes iniciam com uma letra maiúscula e


apresentam a letra inicial de cada palavra que eles incluem em maiúscula (por
exemplo, SampleClassName). O nome de uma classe é um identificador — uma
série de caracteres que consiste em letras, dígitos, sublinhados ( _ ) e sinais de
cifrão ($) que não inicie com um dígito e não contenha espaços. Alguns
identificadores válidos são Welcome1, $valor, _valor, m_campoDeEntrada1 e
botao7. O nome 7botao não é um identificador válido porque inicia com um dígito,
e o nome campo de entrada não é um identificador válido porque contém
espaços. Normalmente, um identificador que não inicia com uma letra maiúscula
não é um nome de classe. O Java faz distinção entre maiúsculas e minúsculas,
ou seja, letras maiúsculas e letras minúsculas são diferentes.

Declarando um método
// método main inicia a execução do aplicativo Java
é um comentário de fim de linha que indica o propósito das linhas 7 a 10 do
programa. A linha 7
public static void main(String[] args)
é o ponto de partida de cada aplicativo Java. Os parênteses depois do
identificador main indicam que ele é um bloco de construção
do programa chamado método. Declarações de classe Java normalmente
contêm um ou mais métodos. Para um aplicativo Java, um
dos métodos deve ser chamado main e ser definido como mostrado na linha 7;
caso contrário, a JVM não executará o aplicativo. Os
métodos realizam tarefas e podem retornar informações quando as completam.
Explicaremos o propósito da palavra-chave static
na Seção 3.2.5. A palavra-chave void indica que esse método não retornará
nenhuma informação. Mais tarde, veremos como um
método pode fazer isso. Por enquanto, basta simular a primeira linha de main
nos aplicativos Java. Na linha 7, a String[] args
entre parênteses é uma parte necessária da declaração main do método, que
discutiremos no Capítulo 7.
A chave esquerda na linha 8 inicia o corpo da declaração do método. Uma chave
direita correspondente deve terminá-la (linha
10). A linha 9 no corpo do método é recuada entre as chaves.

Exemplo

1 // Aula.java
2 // Programa de impressão de texto.
3
4 public class BemVindo
5 {
6 // método main inicia a execução do aplicativo Java
7 public static void main(String[] args)
8 {
9 System.out.println("Bem vindo ao curso de java!");
10 } // fim do método main
11 } // fim da classe BemVindo

Gerando saída com System.out.println


A linha 9

System.out.println("Welcome to Java Programming!");

Instrui o computador a executar uma ação, ou seja, exibir os caracteres contidos


entre as aspas duplas (as próprias aspas não são exibidas). Juntos, as aspas e
os caracteres entre elas são uma string — também conhecida como string de
caracteres ou string literal. Os caracteres de espaço em branco em strings não
são ignorados pelo compilador. As strings não podem distribuir várias linhas de
código. O objeto System.out — que é predefinido para você — é conhecido
como objeto de saída padrão. Ele permite que um aplicativo Java exiba
informações na janela de comando a partir da qual ele é executado. Em versões
recentes do Microsoft Windows, a janela de comando chama-se Prompt de
Comando. No Unix/Linux/Mac OS X, a janela de comando é chamada janela
terminal ou shell. Muitos programadores simplesmente a chamam linha de
comando. O método System.out.println exibe (ou imprime) uma linha de texto
na janela de comando. A string entre parênteses na linha 9 é o argumento para
o método. Quando System.out.println completa sua tarefa, ele posiciona o cursor
de saída (o local em que o próximo caractere será exibido) no começo da linha
seguinte na janela de comando. Isso é semelhante àquilo que acontece ao
pressionar a tecla Enter depois de digitar em um editor de texto — o cursor
aparece no início da próxima linha no documento. A linha 9 inteira, incluindo
System.out.println, o argumento “Bem-vindo ao curso de java!"); entre
parênteses e o ponto e vírgula (;), é uma instrução. Um método normalmente
contém uma ou mais instruções que executam a tarefa. A maioria das instruções
acaba com um ponto e vírgula. Quando a instrução na linha 9 executa, ela exibe
bem-vindo-vindo ao curso de java! na janela de comando. Ao aprender a
programar, às vezes é útil “quebrar” um programa funcional para você poder
familiarizar-se com as mensagens de erro de sintaxe do compilador. Essas
mensagens nem sempre declaram o problema exato no código. Ao encontrar um
erro, ele lhe dará uma ideia do que o causou.

Exibindo múltiplas linhas de texto com uma única instrução


Uma única instrução pode exibir múltiplas linhas utilizando caracteres de nova
linha, os quais indicam aos métodos print e println de System.out quando
posicionar o cursor de saída no começo da próxima linha na janela de comando.
Como ocorre com linhas em branco, caracteres de espaço em branco e
caracteres de tabulação, os caracteres de nova linha são caracteres de espaço
em branco. O programa na Figura 2.4 exibe quatro linhas de texto utilizando
caracteres de nova linha para determinar quando iniciar cada nova linha. A linha
9 System.out.println("Bem-vindo /nao curso de java!");

\n Nova linha. Posiciona o cursor de tela no início da próxima linha.


\t Tabulação horizontal. Move o cursor de tela para a próxima parada de
tabulação.

\\ Barras invertidas. Utilizadas para imprimir um caractere de barra invertida.

\" Aspas duplas. Utilizadas para imprimir um caractere de aspas duplas.


System.out.println("\"entre aspas\"");
exibe "entre aspas".

Declarações import
Essas classes são agrupadas em pacotes — chamados de grupos de classes
relacionadas e, coletivamente, são chamadas de biblioteca de classes Java.

import java.util.Scanner; // programa utiliza a classe Scanner

É uma declaração import que ajuda o compilador a localizar uma classe utilizada
nesse programa. Isso indica que o programa usa a classe Scanner predefinida
(discutida mais adiante) do pacote chamado java.util. O compilador então
garante que você usa a classe corretamente.
Mostrar uma mensagem na tela

package primeiro; //É um pacote, ou seja, um conjunto de classes localizadas


na mesma estrutura hierárquica de diretórios

import javax.swing.JOptionPane; //JOptionPane faz parte do pacote


javax.swing, utilizando pra criação de GUIs (interface com o usuário).

//JOptionPane é, especificamente, a que contém caixas de diálogo,


confirmação, inputs, e por aí vai...

public class Mensagem { // Uma classe Java é como se fosse um "molde" pelo
qual são instanciados(criados) os objetos.

//Por exemplo, temos a classe Mensagem com atributos textos.

//Um objeto gerado a partir dessa classe seria a mensagem mostrada na tela .

public static void main(String[] args){

//O VOID é tipo de retorno do método. Este tipo de retorno significa vazio/nada,
o método não dá retorno nenhum. Os métodos podem retornar qualquer tipo do
seu projeto, até mesmo os criados por você. O método main é chamado
quando vc manda rodar uma classe java (java - classe)

// (String[] args) Este parâmetro serve para caso seu programa precise receber
algum valor como argumento, isso é muito comum quando o programa é
iniciado por outro programa

JOptionPane.showMessageDialog(null,"Meu primeiro programa!\n Curso


Java Make Soluções!");
//JOptionPane.showInputDialog abre uma pequena janela para o usuário
/digitar alguma coisa ou mostrar algo.
}

Adicionando inteiros
Nosso próximo aplicativo lê (ou insere) dois inteiros (números inteiros como –22,
7, 0 e 1024) digitados por um usuário no teclado, calcula sua soma e a exibe.
Esse programa deve manter um registro dos números fornecidos pelo usuário
para o cálculo mais tarde no programa. Os programas lembram-se dos números
e de outros dados na memória do computador e os acessam por meio de
elementos de programa chamados variáveis.

package Soma; // É um pacote, ou seja, um conjunto de classes localizadas na


mesma estrutura hierárquica de diretórios

import javax.swing.JOptionPane;//JOptionPane faz parte do pacote


javax.swing, utilizando pra criação de GUIs (interface com o usuário).

JOptionPane é, especificamente, a que contém caixas de diálogo, confirmação,


inputs, e por aí vai...

public class Soma {// Uma classe Java é como se fosse um "molde" pelo qual
são instanciados(criados) os objetos. Por exemplo, temos a classe Soma com
atributos numeros e o operador. Um objeto gerado a partir dessa classe seria a
instância soma do valor 1 com o valor 2 mostrando o resultado.

public static void main(String args[]) {

//O VOID é tipo de retorno do método. Este tipo de retorno significa vazio/nada,
o método não dá retorno nenhum. Os métodos podem retornar qualquer tipo do
seu projeto, até mesmo os criados por você.

O método main é chamado quando vc manda rodar uma classe java (java -
classe)

(String[] args) Este parâmetro serve para caso seu programa precise receber
algum valor como argumento, isso é muito comum quando o programa é
iniciado por outro programa

int soma; // nome da variavel do tipo inteiro

int num1 = 0; int num2 = 0; // nome das variaveis do tipo inteiro


recebendo valor 0

num1 = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um
numero:"));
// Integer.parseInt: analisa, e retorna um inteiro

(JOptionPane.showInputDialog(null,"Digite um numero:")); Abre uma pequena


janela para o usuário digitar alguma coisa ou mostrar algo

num2 = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite outro


numero:"));
soma = num1 + num2; JOptionPane.showMessageDialog(null,"A soma dos
numeros e: " + soma);
// a variável soma recebe o valor 1 e armazena, depois recebe o valor 2 e
armazena e em sequência realiza a soma e mostra o resultado na tela atraves
do comando(null,"A soma dos numeros e: " + soma);

System.exit(0); //Finaliza o Aplicativo.


}
}

Variáveis de instância, métodos set e métodos get

• Uma variável de instância é uma variável cujo valor é específico ao objeto


e não à classe. Uma variável de instância em geral possui um valor diferente
em cada objeto membro da classe.

• Uma variável de classe é uma variável cujo valor é comum a todos os


objetos membros da classe. Mudar o valor de uma variável de classe em um
objeto membro automaticamente muda o valor para todos os objetos
membros.

• set e get é um padrão para nomear métodos, onde o set significa que você
mudará o estado do objeto e o get te retornará algum valor de um
determinado estado. Em outras palavras o GET é quando você quer pegar
um valor. SET é quando você deseja enviar algo, algum valor.

1 // Figura 3.1: Account.java


2 // Classe Account que contém uma variável de instância name
3 // e métodos para configurar e obter seu valor.
4
5 public class Mensagem
6 {
7 private String nome; // variável de instânciaÿ
8
9 // método para definir o nome no objeto ÿ
10 public void setNome(String nome) ÿ
11 {
12 this.nome= nome; // armazena o nome ÿ
13 }
14
15 // método para recuperar o nome do objeto ÿ
16 public String getNome() ÿ
17 {
18 return nome; // retorna valor do nome para o chamador
19 }

20 } // fim da classe Account


Modificadores de acesso public e private

A maioria das declarações de variável de instância é precedida pela palavra-


chave private. Da mesma forma que public, private é um modificador de acesso.
As variáveis ou métodos declarados com o modificador de acesso private só são
acessíveis a métodos da classe em que isso ocorre.

Objeto Scanner para receber a entrada do usuário

A classe Scanner tem como objetivo separar a entrada dos textos em blocos,
gerando os conhecidos tokens, que são sequências de caracteres separados por
delimitadores que por padrão correspondem aos espaços em branco, tabulações
e mudança de linha.

Com essa classe podem ser convertidos textos para tipos primitivos, sendo que
esses textos podem ser considerados como objetos do tipo String, InputStream
e arquivos.

Validação de Senha em Java

package usuario; // é um pacote, ou seja, um conjunto de classes localizadas na


mesma estrutura hierárquica de diretórios

import javax.swing.JOptionPane; //JOptionPane faz parte do pacote


javax.swing, utilizando pra criação de interface com o usuário. JOptionPane é,
especificamente, a que contém caixas de diálogo, confirmação, inputs, e por aí
vai...

public class ValidaSenha { // Uma classe Java é como se fosse um "molde" pelo
qual são instanciados(criados) os objetos. Por exemplo, temos a classe
ValidaSenha com atributos senha, Make. Um objeto gerado a partir dessa classe
seria a instância Acesso Negado e Acesso Permitido .

private static String MAKE; // Static serve para referenciar todos aqueles
atributos/métodos de classe, ou seja, que podem ser acessados diretamente da
definição da classe, sem precisar instanciar nenhum objeto

public static void main(String[] args){ //O VOID é tipo de retorno do método.
Este tipo de retorno significa vazio/nada, o método não dá retorno nenhum. Os
métodos podem retornar qualquer tipo do seu projeto, até mesmo os criados por
você.

O método main é chamado quando vc manda rodar uma classe java (java -
classe)

(String[] args) Este parâmetro serve para caso seu programa precise receber
algum valor como argumento, isso é muito comum quando o programa é iniciado
por outro programa
String senha =MAKE; // são objetos que contém uma cadeia de caracteres. São
imutáveis, portanto uma vez criadas não podem ser alteradas.

senha = JOptionPane.showInputDialog("Digite a Senha");


//JOptionPane.showInputDialog abre uma pequena janela para o usuário digitar
alguma coisa

while (senha != MAKE){ //While: Esta instrução é usada quando não sabemos
quantas vezes um determinado bloco de instruções precisa ser repetido. Com
ele, a execução das instruções vai continuar até que uma condição seja
verdadeira.
O do/while tem quase o mesmo funcionamento que o while, a diferença é que
com o uso dele teremos os comandos executados ao menos uma única vez.

JOptionPane.showMessageDialog(null, "ACESSO NEGADO"); //abre uma


pequena janela mostrando Acesso Negado

senha = JOptionPane.showInputDialog("Digite a Senha"); //abre uma pequena


janela mostrando Digite a Senha

JOptionPane.showMessageDialog(null, "ACESSO PERMITIDO");


// Se a senha estiver correta abre uma mensagem na tela mostrando Acesso
Permitido.

}
}

While

O termo while pode ser traduzido para o português como “enquanto”. Este termo é
utilizado para construir uma estrutura de repetição que executa, repetidamente, uma
única instrução ou um bloco delas “enquanto” uma expressão booleana for verdadeira.

do-while
A estrutura de repetição do-while é uma variação da estrutura while. Existe uma
diferença sutil, porém importante, entre elas. Em um laço while, a condição é testada
antes da primeira execução das instruções que compõem seu corpo. Desse modo, se
a condição for falsa na primeira vez em que for avaliada, as instruções desse laço não
serão executadas nenhuma vez. Em um laço do-while, por outro lado, a condição
somente é avaliada depois que suas instruções são executadas pela primeira vez,
assim, mesmo que a condição desse laço seja falsa antes de ele iniciar, suas
instruções serão executadas pelo menos uma vez.

Métodos static em Java

Os métodos static ou métodos da classe são funções que não dependem de


nenhuma variável de instância, quando invocados executam uma função sem a
dependência do conteúdo de um objeto ou a execução da instância de uma
classe, conseguindo chamar direto qualquer método da classe e também
manipulando alguns campos da classe.

Static main

Quando declarado o método main como static permite que invoque o main sem
criar uma instância da classe, ou seja, a classe é conhecida como classe
principal ou classe testadora, que efetuará os testes e chamadas das classes
para a execuções dos programas

if/else

A estrutura condicional if/else permite ao programa avaliar uma expressão como


sendo verdadeira ou falsa e, de acordo com o resultado dessa verificação,
executar uma ou outra rotina.

Usando IF
Para usar o IF basta digitar entre parênteses o que deve ser comparado.
IMPORTANTE: IF é uma palavra reservada que não aceita ponto-e-vírgula (;) no
final.
Se for verdadeiro, o programa executará a primeira linha logo abaixo do if. Mas,
e se quisermos executar várias linhas se if for verdadeiro? Se o if tiver que
executar várias linhas, todas as linhas que devem ser enquadradas dentro do
bloco de dados - as chaves ({}).
Usando ELSE
O ELSE só existe se tiver um IF. O else só será executado se o IF for falso. Else
executará só a primeira linha abaixo dele. Se o else tiver que executar várias
linhas, vale a mesma regra de if. Todas as linhas a ser executadas deverão estar
contidas dentro do bloco de dados ({}). Para que IF chegue a uma decisão de
falso e verdadeiro são necessários operadores lógicos. Dos quais destacam-se

• > - maior que


• < - menor que
• >= - maior ou igual a
• <= - menor ou igual a
• == - igual a

• != - diferente de

Jogo batalha naval

import java.util.Random;
import java.util.Scanner;

public class batalhaNaval {

public static void main(String[] args) {


int[][] tabuleiro = new int[5][5];
int[][] navios = new int[3][2];
int[] tiro = new int[2];
int tentativas=0,
acertos=0;

inicializaTabuleiro(tabuleiro);
iniciaNavios(navios);

System.out.println();

do{
mostraTabuleiro(tabuleiro);
darTiro(tiro);
tentativas++;

if(acertou(tiro,navios)){
dica(tiro,navios,tentativas);
acertos++;
}
else
dica(tiro,navios,tentativas);

alteraTabuleiro(tiro,navios,tabuleiro);

}while(acertos!=3);

System.out.println("\n\n\nJogo terminado. Você


acertou os 3 navios em "+tentativas+" tentativas");
mostraTabuleiro(tabuleiro);
}

public static void inicializaTabuleiro(int[][]


tabuleiro){
for(int linha=0 ; linha < 5 ; linha++ )
for(int coluna=0 ; coluna < 5 ; coluna++ )
tabuleiro[linha][coluna]=-1;
}

public static void mostraTabuleiro(int[][] tabuleiro){


System.out.println("\t1 \t2 \t3 \t4 \t5");
System.out.println();

for(int linha=0 ; linha < 5 ; linha++ ){


System.out.print((linha+1)+"");
for(int coluna=0 ; coluna < 5 ; coluna++ ){
if(tabuleiro[linha][coluna]==-1){
System.out.print("\t"+"~");
}else if(tabuleiro[linha][coluna]==0){
System.out.print("\t"+"*");
}else if(tabuleiro[linha][coluna]==1){
System.out.print("\t"+"X");
}
}
System.out.println();
}

public static void iniciaNavios(int[][] navios){


Random sorteio = new Random();

for(int navio=0 ; navio < 3 ; navio++){


navios[navio][0]=sorteio.nextInt(5);
navios[navio][1]=sorteio.nextInt(5);

//agora vamos checar se esse par não foi


sorteado
//se foi, so sai do do...while enquanto sortear
um diferente
for(int anterior=0 ; anterior < navio ;
anterior++){
if( (navios[navio][0] ==
navios[anterior][0])&&(navios[navio][1] ==
navios[anterior][1]) )
do{

navios[navio][0]=sorteio.nextInt(5);

navios[navio][1]=sorteio.nextInt(5);
}while( (navios[navio][0] ==
navios[anterior][0])&&(navios[navio][1] ==
navios[anterior][1]) );
}

}
}

public static void darTiro(int[] tiro){


Scanner entrada = new Scanner(System.in);

System.out.print("Linha: ");
tiro[0] = entrada.nextInt();
tiro[0]--;

System.out.print("Coluna: ");
tiro[1] = entrada.nextInt();
tiro[1]--;

public static boolean acertou(int[] tiro, int[][]


navios){
for(int navio=0 ; navio<navios.length ; navio++){
if( tiro[0]==navios[navio][0] &&
tiro[1]==navios[navio][1]){
System.out.printf("Você acertou o tiro
(%d,%d)\n",tiro[0]+1,tiro[1]+1);
return true;
}
}
return false;
}

public static void dica(int[] tiro, int[][] navios, int


tentativa){
int linha=0,
coluna=0;

for(int fila=0 ; fila < navios.length ; fila++){


if(navios[fila][0]==tiro[0])
linha++;
if(navios[fila][1]==tiro[1])
coluna++;
}

System.out.printf("\nDica %d: \nlinha %d -> %d


navios\n" +
"coluna %d -> %d
navios\n",tentativa,tiro[0]+1,linha,tiro[1]+1,coluna);
}

public static void alteraTabuleiro(int[] tiro, int[][]


navios, int[][] tabuleiro){
if(acertou(tiro,navios))
tabuleiro[tiro[0]][tiro[1]]=1;
else
tabuleiro[tiro[0]][tiro[1]]=0;
}
}

String e array
Strings são utilizadas frequentemente em várias linguagens de programação,
não apenas Java. Embora Strings sejam uma sequência de caracteres em Java,
e não um array de caracteres.
Array é um conjunto de variáveis de mesmo tipo, guardado dentro de apenas
um identificador.
Em Java, o importante é entender que string não é um tipo de dado, mas sim
uma classe. E suas variáveis são, na verdade, objetos dessa classe.
Em síntese, tanto um array de caracteres como uma string se apresentam da
mesma forma.
Então, qual a vantagem de se usar uma classe e não um array de tipo primitivo?
A resposta se baseia exatamente no uso da orientação a objetos e no fato de
que existem muitos métodos que podemos utilizar em um objeto instanciado da
classe String, mesmo sendo os objetos desta classe imutáveis, ou seja, uma vez
instanciados não podemos mudar o que está guardado dentro do objeto String .

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy