PRÁTICA DE LABORATÓRIO ATENÇÃO!!! Não basta digitar e executar os exemplos, leiam e interpretem o que cada linha de código está fazendo para que compreendam a matéria. MATRIZES: As matrizes são semelhantes aos vetores, com a diferença que as matrizes possuem dois índices: o de LINHA e o de COLUNA. Por isso são chamadas de arrays bidimensionais. Em sua instanciação é necessário colocar o nº de LINHAS e o Nº de COLUNAS da matriz. Ex: int matriz[][] = new int[3][3]; Declaração, instanciação e iniciação de uma matriz com 3 linhas e 3 colunas em um único comando: Int [][]matriz = {{30,54,62,{12,25,39,{50,37,91; Neste caso não é necessário colocar o nº de linhas e colunas, pois o sistema já identifica que ela é 3x3 pela quantidade de valores armazenados. Agora vamos trabalhar com ela: Primeiro vamos consultar o conteúdo da matriz, ou seja, os valores armazenados nela: public class ExmploMatriz { // Declaração, Instanciação e Iniciação da matriz em um único comando int matriz[][] = {{30,54,62,{12,25,39,{50,37,91; // Consulta dos valores da matriz // O "for" externo varre as linhas da matriz for(int j=0; j<=2; j++){ //O "for" interno varre as colunas da matriz for(int k=0; k<=2; k++){ System.out.println("matriz["+j+"]["+k+"] = "+matriz[j][k]); Perceba que quando trabalhamos com matrizes é necessário colocar os dois índices da matriz, o índice referente as linhas e o índice referente as colunas.
Neste caso utilizamos dois laços for aninhados, o externo para as linhas e o interno para as colunas. Agora vamos solicitar ao usuário que digite os valores a serem armazenados na matriz: // Importação do pacote "javax.swing" para utilizarmos a classe JOptionPane import javax.swing.*; public class ExmploMatriz { // Declaração e Instanciação da matriz em um único comando int matriz[][] = new int[3][3]; // O "for" externo varre as linhas da matriz for(int j=0; j<=2; j++){ // O "for" interno varre as colunas da matriz for(int k=0; k<=2; k++){ // Solicitação para o usuario digitar os valores // JOptionPane recebe valores sempre em String String aux = JOptionPane.showInputDialog(null,"Digite um No inteiro:"); // Conversão do valor em formato string para tipo inteiro int num = Integer.parseInt(aux); // Agora armazenamos o numero na matriz matriz[j][k] = num; // Consulta dos valores digitados pelo usuário // O "for" externo varre as linhas da matriz for(int j=0; j<=2; j++){ // O "for" interno varre as colunas da matriz for(int k=0; k<=2; k++){ System.out.println("matriz["+j+"]["+k+"]="+matriz[j][k]); Veja que precisamos colocar a solicitação da digitação dentro do laço for interno da matriz, após passar pela leitura da linha e da coluna. Lembre-se que a classe JOptionPane recebe valores em formato de String através do método showinputdialog(). Portanto para que esse valor digitado seja realmente um número, precisamos convertê-lo utilizando o método parseint() da classe wrapper Integer. Vajamos como trabalhar com uma matriz de Strings: import javax.swing.*; public class MatrizString { String nomes[][]= new String[2][2];
// O "for" externo varre as linhas da matriz for(int j=0; j<=1; j++){ // O "for" interno varre as colunas da matriz for(int k=0; k<=1; k++){ // Solicitação para o usuario digitar os nomes // JOptionPane recebe valores sempre em String String nome = JOptionPane.showInputDialog(null,"Digite nome:"); // Agora armazenamos os nomes na matriz // Neste caso não precisa converter pois nomes já são Strings nomes[j][k] = nome; // Consulta dos nomes digitados pelo usuário // O "for" externo varre as linhas da matriz for(int j=0; j<=1; j++){ // O "for" interno varre as colunas da matriz for(int k=0; k<=1; k++){ System.out.println("nomes["+j+"]["+k+"]="+nomes[j][k]); Neste caso os nomes são Strings e portanto não precisa fazer conversão, mas os índices da matriz continuam sendo números inteiros. Altere o exemplo para exibir os nomes em uma única tela utilizando o JOptionPane. Vamos utilizar uma matriz com nº de linhas diferentes do nº de colunas. // Importação da classe JOptionPane import javax.swing.joptionpane; public class ExemploMatriz2 { // Declaração e instanciação da matriz notas com 3 linhas e 2 colunas float notas[][] = new float[3][2]; // Declaração de variáveis do tipo inteiro int aluno = 0, nota; // Ao invés de usar o "for" usamos o "while" // A variável aluno representa o número de linhas while(aluno<3){ // iniciação da variavel nota com o valor 0 nota = 0; // A variável nota representa o numero de colunas while(nota<2){ // Recebe a digitacao das notas dos alunos, converte para tipo float e armazena na matriz notas[aluno][nota] = Float.parseFloat(JOptionPane.showInputDialog(null,"Forneça a nota "+(nota+1)+" do aluno "+(aluno+1)));
// Acrescenta 1 na variável nota para passar para a próxima coluna nota++; // Acrescenta 1 na variável aluno para passar para a próxima linha aluno++; // Solicita o número de um aluno para que seja mostrada sua nota aluno = Integer.parseInt(JOptionPane.showInputDialog(null,"Forneça o nº do aluno a consultar:")); // Mostra as notas do aluno que foi solicitado JOptionPane.showMessageDialog(null,"CONSULTA DE NOTAS: "+ "\naluno : " + aluno + "\nnota1 : " + notas[aluno -1][0] + "\nnota2 : " + notas[aluno -1][1] + "\nmédia : " +((notas[aluno -1][0] + notas[aluno -1][1]) /2)); // Sempre que utilizamos o JOptionPane usamos o System.exit(0) System.exit(0); MANIPULAÇÃO DE STRINGS Toda String é constante e o seu conteúdo não pode ser modificado depois de ser criado. Apenas podemos manipular o seu conteúdo. Vamos ver os métodos de manipulação de Strings: charat() e concat() public class ExemploString { String st = "Minha String"; // O método charat recupera o caracter na posição do índice indicado // Os índices da String começam a partir do 0 como nos arrays char x = st.charat(2); // Usamos o método concat para acrescentar uma outra palavra a String // Armazenamos em uma nova String sem modificar a original String frase = st.concat(" NOVA"); // Vamos mostrar o resultado System.out.println("Posicao 2 da String st : " + x); System.out.println("String original concatenada : " + frase); // A String frase não pode ser alterada mas pode ser manipulada frase += " Manipulada"; System.out.println("String frase Concatenada" + frase);
equals() e equalsignorecase() // Importação do pacote javax.swing para usarmos a classe JOptionPane import javax.swing.*; public class ExemploString1 { // Criação de uma String chamada login String login = "ALUNO"; // Criação de uma String chamada senha String senha = "UNIBAN"; // Solicitamos a digitação do login String aux = JOptionPane.showInputDialog(null,"Digite o login:"); // equalsignorecase não verifica o tamanho das letras if(aux.equalsignorecase(login)){ // Solicitamos a digitação da senha String aux1 = JOptionPane.showInputDialog(null,"Digite a senha"); // equals verifica o tamanho das letras if(aux1.equals(senha)){ JOptionPane.showMessageDialog(null,"Senha correta!"); else{ JOptionPane.showMessageDialog(null,"Senha incorreta!"); else{ JOptionPane.showMessageDialog(null,"Login incorreto"); indexof(), lastindexof() e length(): public class ExemploString2 { // Criação da String nome String nome = "UNIBAN"; // captura o indice referente a primeira letra "i" da palavra // É case sensitive, portanto a letra tem que estar como na frase int pos = nome.indexof("i"); // captura o indice referente a última letra "n" da palavra // Se a letra no parametro estiver minúscula retorna -1 int pos1 = nome.lastindexof("n"); // captura o tamanho da String como um número inteiro // Lembrese que o índice da String começa do 0 int tamanho = nome.length(); System.out.println("Indice da 1a letra i = "+pos); System.out.println("Indice da ultima letra n = "+pos1);
posicoes"); System.out.println("Tamanho da palavra = "+tamanho+" replace(), startswith() e endswith() public class ExemploString3 { // Criação da String palavra String palavra = "Universidade"; // Substituição de um caratcter por por outro // Case-sensitive. se não achar o caracter, não substitui String nova = palavra.replace("s","c"); System.out.println("Nova palavra: "+nova); // Podemos substituir mais de um caracter String outra = palavra.replace("uni","ad"); System.out.println("Nova palavra: "+outra); // Verifica se a palavra começa com "U" // case-sensitive: a letra tem que estar maiúscula if(palavra.startswith("u")){ System.out.println("A palavra começa com U"); else{ System.out.println("A palavra não começa com U"); // Verifica se a palavra termina com "e" // case-sensitive: a letra tem que estar minúscula if(palavra.endswith("e")){ System.out.println("A palavra termina com e"); else{ System.out.println("A palavra não termina com e"); substring(), valueof() e Split(): public class ExemploString4 { // Criação da String a String a = "Estudante"; // Captura de um trecho da palavra entre os indices 4 e 8 // O método pega apenas até o indice anterior ao indicado String st = a.substring(4,8); System.out.println("Trecho da palavra: "+st); // Para pegar até o índice 8, precisamos colocar o indice 9 System.out.println("Trecho da palavra: "+a.substring(4,9)); // Pega um trecho da String até o final String st2 = a.substring(5); System.out.println("Trecho da palavra: "+st2); // Ou podemos apenas imprimir um trecho sem capturar em outra String System.out.println("Trecho da palavra: "+a.substring(4)); // Criação da variável num int num = 100;
//Usamos num para fazer um cáuculo System.out.println("Novo número: "+(num + 10)); String palavra = String.valueOf(num); System.out.println("Agora na variável palavra 100 é uma String: "+palavra); System.out.println("Não podemos mais calcular: "+(palavra+10)); // Criação da String uni String uni = "Universidade Bandeirante de São Paulo"; // O metodo split divide a string no registro entre aspas String vetor[] = uni.split(" "); for(int i=0; i<=4; i++){ System.out.println("vetor["+i+"]="+vetor[i]); tolowercase(), touppercase() e trim(): public class ExemploString5 { // Criação da String nome com a palavra UNIBAN em caixa alta String nome = "UNIBAN"; // O método tolowercase() escreve a palavra com todas as letras minúsculas System.out.println("Todas as letras minúsculas: "+nome.tolowercase()); // Criação da string st com a palavra universidade escrita em caixa baixa String st = "universidade"; // O método touppercase() escreve a palava com todas as letras maiúsculas System.out.println("Todas as letras maiúsculas: "+st.touppercase()); // Criação da String st2 com a palavra Bandeirante com espaços no início e fim String st2 = " Bandeirante "; System.out.println("Sem o método trim: "+st+st2+"de São Paulo"); // O método split() tira os espaços em branco de st2 System.out.println("Sem os espaços em branco no inicio e final: "+st+st2.trim()+"de São Paulo"); USO DO while e do-while: A laço while verifica a condição e executa as instruções enquanto a condição for verdadeira. Já o do-while verifica a condição após as instruções e por isso executa as instruções pelo menos uma vez. public class ExemploWhileDoWhile {
verdadeira // Criação e iniciação das variáveis valor e ncont int valor = 0, ncont = 0; // O laço while faz a verificação da condição while(valor < 50){ // Executa as instruções se enquanto condição for valor+=10; System.out.println("Conteúdo de valor: "+valor); // O laço do-while executa as instruções do{ ncont+=10; // Verifica a condição após a execução das instruções while(ncont<0); System.out.println("Conteúdo de ncont: "+ncont); Veja que o while executou as condições enquanto a condição era verdadeira, ou seja, enquanto a variável valor era menor que 50. O do-while alterou o valor da variável ncont mesmo a condição sendo falsa, ou seja, ncont não era menor que 0. Mesmo assim o valor de ncont foi alterado, pois a verificação é feita após a instrução de atribuição. EXERCÍCIOS Faça uma classe em Java que declare uma matriz 3x3, atribua e mostre os valores no formato abaixo sem serem digitados pelo usuário: 0 1 2 1 2 3 2 3 4 Faça uma classe em Java que receba um nome completo digitado pelo usuário e mostre esse nome na ordem inversa.