Você está na página 1de 26

Criando e Gravando dados em Txt com Java

Os computadores utilizam os arquivos como estruturas de dados para


armazenamento de longo prazo de grandes volumes de dados. Dados mantidos
em arquivos são chamados de dados persistentes porque eles existem além da
duração da execução do programa em dispositivos de armazenamento
secundário como disquete, disco rígido, entre outros.

Nos artigos sobre arquivos texto será demostrado como as aplicações


Java criam, recuperam, atualizam e processam arquivos de dados. O
processamento de arquivo representa um subconjunto das capacidades de
processamento que permitem a um programa armazenar e processar volumes
maciços de dados persistentes.

Neste primeiro artigo será demonstrada a criação e a gravação de um


arquivo texto no qual os dados são armazenados como uma sequência de
caracteres dividida em linhas terminadas por um caractere de fim de linha. Os
arquivos no formato texto geralmente são encontrados com nomes com a
extensão padrão TXT (abreviação de TEXT, ou texto em inglês). Arquivos
texto podem ser facilmente lido ou abertos por qualquer programa que lê texto
e, por essa razão, são considerados universais.

Programas Java implementam o processamento de arquivos utilizando as


classes do pacote java.io. A hierarquia de classes oferecida por este pacote,
apresentada de forma parcial na Figura 1, é relativamente grande e complexa,
oferecendo mais de 50 classes distintas para o processamento de entrada e
saída em arquivos baseados em bytes e caracteres e arquivos de acesso
aleatório. Os arquivos são abertos criando-se objetos através de uma das
classes de fluxo, citando:

 FileInputStream: para entrada baseada em bytes de um arquivo.


 FileOutputStream: para saída baseada em bytes para um arquivo.
 RandomAccessFile: para entrada e saída baseada em bytes de e para
um arquivo.
 FileReader: para entrada baseada em caracteres de um arquivo.
 FileWriter: para saída baseada em caracteres para um arquivo.
Figura 1. Hierarquia parcial de classes do pacote java.io.

Para demonstrar a utilização das classes para entrada ou saída baseada em


caracteres na manipulação de arquivos texto será desenvolvida uma
aplicação Java para gravar a tabuada de um número em um arquivo externo
denominado de "tabuada.txt" criado na unidade de disco "d".

Desenvolvendo a Aplicação Java

Nos arquivos de texto os dados são organizados como uma sequência de


caracteres dividida em linhas terminadas por um caractere de fim de linha
(\n). A interação de um programa com um dispositivo através de arquivos
passa por três etapas: abertura ou criação de um arquivo, leitura ou gravação
de dados e fechamento do arquivo.

A Listagem 1 apresenta como utilizar as


classes FileWriter e PrinterWriter na criação e gravação de dados baseada
em caracteres para um arquivo de texto. Os
métodos print(), println() e printf() são aplicados na gravação de caracteres.

Listagem 1. Gravando dados em um arquivo texto.

1 import java.io.FileWriter;
2 import java.io.IOException;
import java.io.PrintWriter;
3 import java.util.Scanner;
4
5 public class Exemplo {
6
7 public static void main(String[] args) throws IOException {
8 Scanner ler = new Scanner(System.in);
9 int i, n;
10
11 System.out.printf("Informe o número para a tabuada:\n");
n = ler.nextInt();
12
13 FileWriter arq = new FileWriter("d:\\tabuada.txt");
14 PrintWriter gravarArq = new PrintWriter(arq);
15
16 gravarArq.printf("+--Resultado--+%n");
17 for (i=1; i<=10; i++) {
gravarArq.printf("| %2d X %d = %2d |%n", i, n, (i*n));
18 }
19 gravarArq.printf("+-------------+%n");
20
21 arq.close();
22
23 System.out.printf("\nTabuada do %d foi gravada com sucesso em
24 \"d:\\tabuada.txt\".\n", n);
}
25
26}
27
28
29

Entendendo o código fonte da Listagem 1:

1. O arquivo externo "tabuada.txt" é aberto para operações de saída


através do objetoarq instanciado e criado a partir da classe FileWriter.
2. O objeto de gravação gravarArq é associado a um fluxo de saída de
dados baseado em caracteres através da classe PrinterWriter.
3. Definido o arquivo de texto externo, foi implementado o processo de
repetição (for) para montar a tabuada de n gravando o resultado no
arquivo, que é fechado através do método close().
4. Observe que os símbolos %n usados no método printf() gravam um
pula linha (caractere de escape \n) no arquivo de saída.

Executando a aplicação deve-se informar o número da tabuada. Ao final do


processo de gravação da tabuada no arquivo texto será apresentada uma
mensagem indicando que o arquivo "tabuada.txt" foi criado com sucesso na
unidade de disco "d". Para visualizar o resultado da gravação basta abrir o
arquivo "tabuada.txt" através do bloco de notas, por exemplo. Na Figura
2 pode-se observar a sequência de passos na gravação da tabuada do 8.
Figura 2. Ilustrando a execução da aplicação e abrindo o arquivo texto no
bloco de notas.

Neste artigo foi apresentado como gravar informações em um arquivo texto.


No próximo artigo sobre a manipulação de arquivos texto em aplicações Java
será demonstrado como efetuar a operação de leitura.
Leitura e escrita de arquivos de texto em Java

A leitura e escrita de arquivos por um programa pode se muito útil, seja


para servir como arquivo de configurações e evitar a necessidade de
modificação frequente do código fonte do próprio programa para cada cenário
ou simplesmente para servir para entrada e saída de dados.

Neste artigo vou explicar passo a passo como criar um programa que a
realiza leitura e escrita de um arquivo .txt. em Java

1. Criando arquivo para leitura e escrita

Para nosso exemplo foi criado um arquivo chamado 'file.txt' que tem como
objetivo ser utilizado para leitura e escrita pelo programa que será criado
passo a passo ao longo deste artigo. Neste exemplo o arquivo foi criado
através de um terminal Linux, porém o mesmo pode ser criado de qualquer
maneira, cabe ao leitor escolher a melhor forma para criação do arquivo
(notepad, gedit,vim...). Inicialmente este arquivo está vazio como pode ser
visto abaixo:

Figura 1: Leitura do arquivo no terminal Linux


2. Código Java

Para explicar de maneira simples como funciona a leitura e escrita de


arquivos, além da criação do arquivo que será utilizado pelo programa,
também foi criado um projeto com o nome de Manipulador_de_Arquivo que
tem duas classes em seu interior:

 ManipuladorArquivo.java
 Principal.java

2.1 ManipuladorArquivo.java

Classe que tem como função manipular (leitura e escrita) do arquivo txt.
Abaixo é possível ver a classe ManipuladorArquivo.java e seus métodos.

Listagem 1: Classe ManipuladorArquivo.java

1 package gomes.fernando.robson;
2
3 import java.io.BufferedReader;
import java.io.BufferedWriter;
4 import java.io.FileReader;
5 import java.io.FileWriter;
6 import java.io.IOException;
7 import java.util.Scanner;
8
9 public class ManipuladorArquivo {
10 public static void leitor(String path) throws IOException {
11 BufferedReader buffRead = new BufferedReader(new
12FileReader(path));
13 String linha = "";
14 while (true) {
if (linha != null) {
15 System.out.println(linha);
16
17 } else
18 break;
19 linha = buffRead.readLine();
}
20
buffRead.close();
21 }
22
23 public static void escritor(String path) throws IOException {
24 BufferedWriter buffWrite = new BufferedWriter(new
25 FileWriter(path));
String linha = "";
26 Scanner in = new Scanner(System.in);
27 System.out.println("Escreva algo: ");
28 linha = in.nextLine();
29 buffWrite.append(linha + "\n");
30 buffWrite.close();
}
31
32}
33
34
35
36

Figura 2: Classe ManipuladorArquivo.java no editor

2.1.1 Breve explicação

Esta classe contém dois métodos estáticos, um para realizar a leitura (leitor) e
outro para realizar a escrita(escritor) em arquivos txt.

2.1.2 Método leitor

O método leitor tem como parâmetro de entrada o path (url/caminho) do


arquivo que será lido, como pode ser visto na assinatura do método:
public static void leitor(String path) throws IOException

Esse método tem como principal objetos internos o BufferedReader que nada
mais é que a classe responsável por gera o buffer que será utilizado para
realizar a leitura do arquivo .txt.

BufferedReader buffRead = new BufferedReader(new FileReader(path));

Uma parte importante deste método, responsável por exibir na tela as linhas
do arquivo txt poder ser considerado o trecho do laço while que contém o
método utilizado para obter o valor de uma linha (string), no exemplo
utilizado o valor da linha foi atribuída a uma variável do tipo String como
pode ser visto abaixo:

linha = buffRead.readLine();

2.1.3 Método escritor

O método escritor tem como parâmetro de entrada o path (url/caminho) do


arquivo que será escrito, como pode ser visto na assinatura do método:

public static void escritor(String path) throws IOException

Esse método tem como principal objeto interno o BufferedWriter, que nada
mais é que a classe responsável por gerar o bufferque será utilizado para
realizar a escrita no arquivo .txt.

BufferedWriter buffWrite = new BufferedWriter(new FileWriter(path));

Uma parte importante deste método, responsável por inserir no arquivo txt é
exatamente o método append localizado no objeto buffWrite. Este método
tem como função inserir uma nova sequência de caracteres ao arquivo texto.

buffWrite.append(linha+"\n");

2.1.4 Importante

É de suma importância fechar os arquivos quando o método termina de


utilizar os mesmos, para isso basta utilizar o método close contido na classe de
leitura ou escrita de arquivos.

buffWrite.close(); ou buffRead.close();
2.2 Principal.java

Classe que tem como principal função utilizar a classe


ManipuladorArquivo.java.

Listagem 2: Classe Principal.Java

1
2 package gomes.fernando.robson;
3
import java.io.IOException;
4
5 public class Principal {
6
7 public static void main(String args[]) throws IOException {
8 String path = "/tmp/file.txt";
9
10 ManipuladorArquivo.escritor(path);
ManipuladorArquivo.leitor(path);
11 }
12
13}
14

Figura 3: Classe Principal.Java no editor


2.2.1 Breve explicação

A classe contém um único método estático (main) que tem como função rodar
o ManipuladorArquivo, passando para os métodos do mesmo o path do
arquivo a ser manipulado.

3. Arquivo após utilização do Projeto

Quando o programa foi executado, foi inserida a string “Sou um teste” no


arquivo.txt, como e possível ver abaixo:

Figura 4: Programa em execução

Após a execução do programa é possível visualizar a seguinte linha no


arquivo.txt.
Figura 5: Conteúdo do arquivo file.txt após escrita

Conclusão

Como foi possível ver ao longo do artigo, é bem simples a realização da


leitura e escrita de arquivos quando se está programando em Java e as
possibilidades são imensas cabendo somente ao programador ou analista o que
fazer.
O que são vetores e como são utilizados no Java?

Vetoressão estruturas de dados que armazenam usualmente uma


quantidade fixa de dados de um certo tipo; por esta razão, também são
conhecidos como estruturas homogêneas de dados.

Internamente, um vetor armazena diversos valores, cada um associado a um


número que se refere à posição de armazenamento, e é conhecido como
índice. Os vetores são estruturas indexadas, em que cada valor que pode
ser armazenado em uma certa posição (índice) é chamado de elemento do
vetor.

Cada elemento do vetor pode ser utilizado individualmente de forma


direta, ou seja, pode ser lido ou escrito diretamente, sem nenhuma regra
ou ordem preestabelecida, fazendo dos vetores estruturas de dados de acesso
aleatório.O número de posições de um vetor corresponde ao tamanho que ele
tem; assim, um vetor de tamanho 10 tem esse número de elementos, isto é,
pode armazenar até dez elementos distintos. Os diferentes elementos de um
vetor são distinguidos unicamente pela posição que ocupam no vetor. Cada
posição de um vetor é unicamente identificada por um valor inteiro
positivo, linear e sequencialmente numerado.

a[i], corresponde ao i-ésimo elemento do vetor a, sendo que o valor da


variável i deve pertencer ao intervalo dos índices do vetor:
((i >= 0) && (i < a.length)).

O Java como as linguagens C e C++ são linguagens com vetores zero-based, isto
é, as posições do vetor iniciam a numeração a partir do valor 0, portanto, um
vetor de tamanho 10 teria índices iniciados em 0 prosseguindo até o 9.

Entenda como funciona o JAVA neste vídeo

Declarando Variáveis do Tipo Vetor

Na declaração de vetores deverão ser fornecidas três informações: 1) o nome


do vetor, 2) o número de posições do vetor (seu tamanho), e 3) o tipo de
dado que será armazenado no vetor. A declaração de um vetor para "inteiros",
de nome "vetor", em Java:

1int vetor[]; // declaração do vetor


Podemos notar que as declarações de vetores são semelhantes às declarações
de variáveis, os elementos sintáticos que diferenciam as variáveis do tipo
vetor das outras variáveis são os colchetes. Embora declarado, o vetor não está
pronto para uso, sendo necessário reservar espaço para seus elementos (uma
operação de alocação de memória).

1vetor = new int[10]; // alocação de espaço para vetor

Na alocação de espaço, não repetimos os colchetes e utilizamos o


operador new (uma palavra reservada da linguagem) para reservar espaço para
10 (dez) elementos do tipo int.

As duas declarações podem ser combinadas em um única, mais compacta:

1int vetor[] = new int[10]; // declaração combinada

Exemplos de Declarações de Variáveis do Tipo


Vetor

Na linguagem Java um vetor é uma "classe, portanto, deve-se utilizar o


método new , que ativa o método construtor correspondente, para criar
instâncias, ou exemplares, da classe vetor do tipo selecionado
(int, double, float, char, String, entre outros), por exemplo:

a) declarando um vetor para armazenar 10 números inteiros

1int nro = new int[10];

b) declarando um vetor para armazenar 10 valores do tipo real (ou monetários)

1double salario = new double[10];

c) declarando um vetor para armazenar o nome dos 12 meses do ano

1String mes = new String[12];

Em síntese
int n = 10; // tamanho do vetor
1
int v[] = new int[n]; // declaração e alocação de espaço para o vetor
2"v"

3int i; // índice ou posição

5// processando os "n" elementos do vetor "v"

6for (i=0; i<n; i++) {

7 v[i] = i; // na i-ésima posição do vetor "v" armazena o valor da


variável "i"
8
}

Representação interna:

v[0] v[1] v[2] v[3] v[4] v[5] v[6] v[7] v[8] v[9]

0 1 2 3 4 5 6 7 8 9

Aplicação Java exemplificando a utilização do tipo de dados vetor:

1 import java.util.Scanner;

3 public class Exemplo1 {

4
public static void main(String[] args) {
5
Scanner ler = new Scanner(System.in);
6

7
int n = 10; // tamanho do vetor
8
int v[] = new int[n]; // declaração do vetor "v"
9
int i; // índice ou posição
10

11// Entrada de Dados

12 for (i=0; i<n; i++) {


13 System.out.printf("Informe %2do. valor de %d: ", (i+1), n);

14 v[i] = ler.nextInt();

}
15

16
// Processamento: somar todos os valores, definir o maior e o menor
17valor

18 int soma = 0;

19 int menor = v[0]; // v[0] = 1o. valor armazenador no vetor "v"

20 int maior = v[0];

for (i=0; i<n; i++) {


21
soma = soma + v[i];
22

23
if (v[i] < menor)
24
menor = v[i];
25

26
if (v[i] > maior)
27
maior = v[i];
28 }
29

30// Saída (resultados)

31 System.out.printf("\n");

32 for (i=0; i<n; i++) {

if (v[i] == menor)
33
System.out.printf("v[%d] = %2d <--- menor valor\n", i,
34v[i]);

35 else if (v[i] == maior)

36 System.out.printf("v[%d] = %2d <--- maior valor\n", i,


v[i]);
37
else System.out.printf("v[%d] = %2d\n", i, v[i]);
38
}
39

40 System.out.printf("\nSoma = %d\n", soma);


41 }
42

43}
44

45

Executando a aplicação tem-se os seguintes resultados:

A classe Math contém diversos métodos estáticos (não exige uma instância da
classe para utilização) destinados a operações numéricas, citando:

 static double random(): retorna um valor, do tipo double, "aleatório"


no intervalo de 0.0 até 1.0;
 static long round(double): retorna um número do tipo long mais
próximo (ou arredondado) do valor do tipo double do argumento.

A utilização combinada dos métodos "random" e "round" possibilita a geração


de números aleatórios, como por exemplo:

1a[i] = (int)Math.round(Math.random() * 10);

2// gera um número inteiro aleatório no intervalo de 0 até 10


Entendendo a atribuição:

 Math.random() retorna um número aleatório, do tipo double, no


intervalo de 0.0 até 1.0;
 Math.random() * 10 tem como resultado um número no intervalo de
0.0 até 10.0;
 Math.round(Math.random() * 10) retorna um número do tipo long
mais próximo (ou arredondado) do resultado;
 (int) faz a conversão (ou coerção, em inglês "cast") do tipo long para o
tipo int.

A aplicação Java a seguir implementa o método de ordenação por seleção

ou Selection Sort:

Inicialização de vetores

Java permite a inicialização de vetores no momento da declaração, por


exemplo:

1String nome[] = {"Juca Bala", "Maria da Silva", "Marcos Paqueta"};

Isso significa que nome[0] terá o valor Juca Bala, nome[1] terá o valor Maria
da Silva, nome[2] terá o valor Marcos Paqueta. Nota-se que não é necessário
indicar o tamanho do vetor e também fazer a alocação de espaço através do
operador new. O tamanho do vetor será conhecido através do campo length
como mostra a aplicação a seguir:

A inicialização de vetores na declaração também permite indexar valores


predefinidos como no caso das informações relacionadas aos meses do ano.
Veja um exemplo na próxima aplicação Java:
Saiba mais sobre o Threads

Estrutura for aprimorada

Utilizada para percorrer os elementos de um vetor sem utilizar um contador:

1for (parâmetro: nomeDoVetor) {

2 instrução;

3}

Onde "parâmetro" tem duas partes: a) um tipo (deve corresponder ao tipo dos
elementos no vetor), e b) um identificador, por exemplo: int nro.

O identificador representa os valores sucessivos do vetor nas sucessivas


iterações da instrução for. Veja um exemplo na próxima aplicação Java:

Parte II

Veja abaixo a segunda parte do artigo - Agora as partes I a III foram


compiladas em um único artigo. Bons estudos :)

Vetores em Java – Parte 2

<

Na primeira parte do artigo sobre Vetores em Java foram apresentadas as


características básicas do tipo de dados vetor, como declarar e exemplos
de variáveis do tipo vetor e uma aplicação Java exemplificando a utilização
de vetores. Nesta segunda parte do artigo serão abordados: números
aleatórios, inicialização de vetores com valores predefinidos e a estrutura
"for" aprimorada.
A classe Math contém diversos métodos estáticos (não exige uma instância da
classe para utilização) destinados a operações numéricas, citando:

1. static double random(): retorna um valor, do tipo double, "aleatório"


no intervalo de 0.0 até 1.0;
2. static long round(double): retorna um número do tipo long mais
próximo (ou arredondado) do valor do tipo double do argumento.

A utilização combinada dos métodos "random" e "round" possibilita a geração


de números aleatórios, como por exemplo:
a[i] = (int)Math.round(Math.random() * 10); // gera um número inteiro
1aleatório no intervalo de 0 até 10

Entendendo a atribuição:

 Math.random() retorna um número aleatório, do tipo double, no


intervalo de 0.0 até 1.0;
 Math.random() * 10 tem como resultado um número no intervalo de
0.0 até 10.0;
 Math.round(Math.random() * 10) retorna um número do tipo long
mais próximo (ou arredondado) do resultado;
 (int) faz a conversão (ou coerção, em inglês "cast") do tipo long para o
tipo int.

A aplicação Java a seguir implementa o método de ordenação por


seleção ou Selection Sort:

Inicialização de vetores

Java permite a inicialização de vetores no momento da declaração, por


exemplo:
String nome[] = {"Juca Bala", "Maria da Silva", "Marcos
1Paqueta"};

Isso significa que nome[0] terá o valor Juca Bala, nome[1] terá o
valor Maria da Silva, nome[2] terá o valor Marcos Paqueta. Nota-se
que não é necessário indicar o tamanho do vetor e também fazer a
alocação de espaço através do operador new. O tamanho do vetor será
conhecido através do campo length como mostra a aplicação a seguir:

A inicialização de vetores na declaração também permite indexar


valores predefinidos como no caso das informações relacionadas aos
meses do ano. Veja um exemplo na próxima aplicação Java:

Estrutura for aprimorada

Utilizada para percorrer os elementos de um vetor sem utilizar um


contador:

1for (parâmetro: nomeDoVetor) {

2 instrução;

3}

Onde "parâmetro" tem duas partes: a) um tipo (deve corresponder ao


tipo dos elementos no vetor), e b) um identificador, por exemplo: int
nro.

O identificador representa os valores sucessivos do vetor nas sucessivas


iterações da instrução for. Veja um exemplo na próxima aplicação Java:

Com este artigo concluímos nossa abordagem sobre vetores


unidimensionais em Java.

Parte III

Veja abaixo a segunda parte do artigo - Agora as partes I a III foram


compiladas em um único artigo. Bons estudos :)
Vetores em Java – Parte 3

Nos dois primeiros artigos sobre Vetores em Java foram abordados os


vetores unidimensionais. Neste terceiro e último artigo serão abordados
os vetores bidimensionais ou matrizes.

Vetores bidimensionais (ou matrizes)

A linguagem Java não fornece vetores multidimensionais, mas como


um vetor pode ser declarado e ter qualquer tipo de base, é possível criar
vetores de vetores (de vetores etc.), alcançando assim o mesmo efeito.

A declaração de um vetor bidimensional para inteiros, de nome "m" em


Java:
int m[][] = new int[2][4]; // matriz com 2 linhas X 4
1 colunas

Representação interna:

m[0][0
m[0][1] m[0][2] m[0][3]
]

m[1][0
m[1][1] m[1][2] m[1][3]
]

Fazendo referência a um elemento do vetor bidimensional:

m[0][2] = 0; // elemento da primeira linha, terceira coluna

// ou ainda, terceiro elemento do primeiro vetor

m[i][j] // elemento da i-ésima linha, j-ésima coluna

Declarando vetores bidimensionais:

1) Com expressões de criação de vetores:


int m[][] = new int[3][3]; // matriz quadrada: 3 linhas X 3
1colunas

2) Declarando e inicializando:
1int m[][] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

equivale as seguintes atribuições:

1
// 1ª linha:
2
m[0][0] = 1;
3
m[0][1] = 2;
4 m[0][2] = 3;
5

6 // 2ª linha:
7 m[1][0] = 4;

8 m[1][1] = 5;

9 m[1][2] = 6;

10
// 3ª linha:
11
m[2][0] = 7;
12
m[2][1] = 8;
13
m[2][2] = 9;
14

3) Com linhas de diferentes tamanhos:

1int m[][] = new int[2][]; // cria 2 linhas

3 m[0] = new int[5]; // cria 5 colunas para a linha 0

4 m[1] = new int[3]; // cria 3 colunas para a linha 1

4) Declarando e inicializando linhas de diferentes tamanhos:

1int m[][] = { {1, 2}, {4, 5, 6, 7, 8}, {9, 10, 11} };

equivale as seguintes atribuições:

1 // 1ª linha com duas colunas:

2 m[0][0] = 1;

3 m[0][1] = 2;
4

5 // 2ª linha com 5 colunas:

6 m[1][0] = 4;

m[1][1] = 5;
7
m[1][2] = 6;
8
m[1][3] = 7;
9
m[1][4] = 8;
10

11
// 3ª linha com 3 colunas:
12 m[2][0] = 9;

13 m[2][1] = 10;

14 m[2][2] = 11;

15

Para conhecer os tamanhos dos vetores deve-se utilizar o


campo length:

a) m.length determina o número de linhas

b) m[i].length determina o número de colunas da i-ésima linha

Percorrendo vetores bidimensionais com linhas de diferentes tamanhos:

1 int m1[][] = { {1, 2, 3, 4}, {5, 6} };

2 int m2[][] = { {1, 2}, , {4, 5, 6} };

3 m.length

m[i].length determina o número de linhas


4
determina o número de colunas da i-ésima linha
5
int i, j;
6
for (i=0; i<m.length; i++) {
7
System.out.printf("%da. linha: ", (i+1));
8
for (j=0; j<m[i].length; j++) {
9 System.out.printf("%d ", m[i][j]);
10 }

11 System.out.printf("\n");

12 }
13

Resultado com "m1":


1a. linha: 1 2 3 4
2a. linha: 5 6

Resultado com "m2":


1a. linha: 1 2
2a. linha: 3
3a. linha: 4 5 6

Exemplos de aplicações Java utilizando


vetores bidimensionais ou matrizes
1 import java.util.Scanner;

3 public class Matriz1 {

4 public static void main(String[] args) {

Scanner ler = new Scanner(System.in);


5
int i, j, m[][] = new int[2][4];
6

7
for (i=0; i<2; i++) {
8
System.out.printf("Informe os elementos %da. linha:\n",
9 (i+1));

10 for (j=0; j<4; j++) {

System.out.printf("m[%d][%d] = ", i, j);


11
m[i][j] = ler.nextInt();
12
}
13
System.out.printf("\n");
14
}
15

16 System.out.printf("\n");
17 for (i=0; i<2; i++) {
18 System.out.printf("%da. linha: ", (i+1));

19 for (j=0; j<4; j++) {


20 System.out.printf("%d ", m[i][j]);

21 }

System.out.printf("\n");
22
}
23
}
24
}
25

26

Listagem 1- Alimentando e mostrando os valores de uma matriz 2 X 4.

1
public class Matriz2 {
2 public static void main(String[] args) {
3 int n = 6;
4 int i, j, m[][] = new int[n][n];

6 for (i=0; i for (j=0; j if (i == j) // diagonal


principal
7
m[i][j] = 0;
8
else if ((i+j) == (n-1)) // diagonal secundária
9 m[i][j] = 1;
10// sorteia um número aleatório no intervalo de 2 até 5

11 else m[i][j] = (int)(Math.round(Math.random() * 2)


+ 3); //
12
}
13
}
14

15 for (i=0; i System.out.printf("%da. linha: ", (i+1));


16 for (j=0; j System.out.printf("%d ", m[i][j]);

17 }

18 System.out.printf("\n");

19 }

}
20
}
21
Listagem 2- Matriz quadrada: diagonal principal e diagonal secundária.

Listagem 1:

Listagem 2:

Referência

Peter Jandl Junior. Introdução ao Java. São Paulo: Berkeley - 2002.

Com este terceiro artigo concluímos nossa abordagem sobre vetores em


Java.

Obrigado e um abraço.