APROG Paradigmas da Programação
Classes JAVA
Nelson Freire (ISEP–DEI-APROG 2013/14) 1/43
Classes Java Sumário
Scanner
JOptionPane
String
Character
Formatter
Calendar
Math
Integer
Long
Float
System
Nelson Freire (ISEP–DEI-APROG 2013/14) 2/43
Scanner Introdução
Package
[Link]
Interesse
Leitura de Dados
Fontes
Teclado
Ficheiro de Texto
Nelson Freire (ISEP–DEI-APROG 2013/14) 3/43
Scanner Leitura do Teclado da Consola 1/2
Realizada
Por objeto da classe Scanner // objeto = instância
Código Necessário
1º Declaração de objeto da classe Scanner para ler do teclado
2º Leitura através de métodos de instância aplicados ao objeto declarado
Exemplos
import [Link];
public class Demo_Scanner {
public static void main(String[] args) {
// Declaração de objeto (ou instância) para ler do teclado
Scanner ler = new Scanner([Link]);
// Leitura
String nome = [Link](); // leitura de nome simples
String nome = [Link](); // leitura de nome composto
int i = [Link]();
long l = [Link]();
double d = [Link]();
float f = [Link]();
}
}
Nelson Freire (ISEP–DEI-APROG 2013/14) 4/43
Scanner Leitura do Teclado da Consola 1/2
Pormenores
Scanner ler = new Scanner([Link]) ;
Declaração do objeto (ou instância) ler da classe Scanner para ler do teclado
new operador para criar uma instância
Scanner() construtor de instâncias da classe Scanner
[Link] representa teclado da consola
Métodos de instância da classe Scanner que podem ser aplicados ao objeto ler
next() Lê próxima string simples do teclado (i.e., cadeia de carateres terminada
pelo carater espaço ou newline ('\n'))
nextLine() Lê próxima linha do teclado (i.e., cadeia de carateres terminada em \n)
nextInt() Lê próximo int do teclado
nextLong() Lê próximo long do teclado
nextFloat() Lê próximo float do teclado
nextDouble() Lê próximo double do teclado
Nelson Freire (ISEP–DEI-APROG 2013/14) 5/43
Classes Java Sumário
Scanner
JOptionPane
String
Character
Formatter
Calendar
Math
Integer
Long
Float
System
Nelson Freire (ISEP–DEI-APROG 2013/14) 6/43
JOptionPane Introdução
Package
[Link]
Interesse
Caixas de Diálogo da Interface Gráfica
Tipos
Entrada
Para Leitura de Dados do Teclado
Saída
Para Escrita de Resultados
Nelson Freire (ISEP–DEI-APROG 2013/14) 7/43
JOptionPane Escrita de Resultados
Método de Classe showMessageDialog
Sintaxe
void showMessageDialog(null, "mensagem")
Exemplos
import [Link];
public class Demo_JOptionPane {
public static void main(String[] args) {
// método showMessageDialog aplicado à classe JOptionPane
[Link](null, "ISEP");
...
...
...
int x = 20;
[Link](null, "Saldo = " + x + " €");
...
}
}
Nelson Freire (ISEP–DEI-APROG 2013/14) 8/43
JOptionPane Leitura de Dados do Teclado 1/2
Método de Classe showInputDialog (1/2)
Método aplicado à classe JOptionPane
Sintaxe
String showInputDialog("mensagem")
Retorno
String contendo dados fornecidos pelo utilizador na caixa de texto
Cancel retorna string vazia ( "" )
Nelson Freire (ISEP–DEI-APROG 2013/14) 9/43
JOptionPane Leitura de Dados do Teclado 2/2
Método de Classe showInputDialog
Exemplos
import [Link];
public class Demo_JOPtionPane {
public static void main(String[] args) {
// método showMessageDialog aplicado à classe JOPtionPane
String nome = [Link]("Digite o seu nome:");
...
// método de classe parseInt da classe Integer converte String em int
int nota = [Link]( [Link]("Digite uma nota (inteiro):"));
...
// método de classe parseFloat da classe Float converte String em float
float nota = [Link]( [Link]("Digite uma nota (real):") );
}
}
Nelson Freire (ISEP–DEI-APROG 2013/14) 10/43
Classes Java Sumário
Scanner
JOptionPane
String
Character
Formatter
Calendar
Math
Integer
Long
Float
System
Nelson Freire (ISEP–DEI-APROG 2013/14) 11/43
String Sumário
Introdução
Métodos de Instância
length
toLowerCase
toUpperCase
trim
substring
charAt
equalsIgnoreCase
equals
compareTo
compareToIgnoreCase
replace
split
Método de Classe
format
Nelson Freire (ISEP–DEI-APROG 2013/14) 12/43
String Introdução
Significado de String
Cadeia de carateres = texto
Exemplos
"ISEP"
"Algoritmia e Programação"
"Nico"
Interesses da Classe String
Guardar valores do tipo String
Cada objeto String guarda uma string
Exemplo
String s = "ISEP"; // String s = new String("ISEP");
String v = ""; // String vazia
Usar funções sobre strings
Exemplo
Método de classe format
Permite formatar string passada por parâmetro
Nelson Freire (ISEP–DEI-APROG 2013/14) 13/43
String Métodos de Instância 1/5
Aplicáveis
Objetos do tipo String
Exemplos // considerando: String s = "Aprog";
int length()
Retorna comprimento da string (quantidade de carateres)
Exemplo: int comprimento = [Link](); // comprimento = 5
String toLowerCase()
Retorna a string com todas as letras minúsculas
Exemplo: String s2 = [Link](); // s2 = "aprog"
String toUpperCase()
Retorna a string com todas as letras maiúsculas
Exemplo: String s2 = [Link](); // s2 = "APROG"
String trim()
Retorna cópia da string sem espaços brancos iniciais e finais
Exemplo: String s = " APROG ";
s2 = [Link](); // s2 = "APROG"
Nelson Freire (ISEP–DEI-APROG 2013/14) 14/43
String Métodos de Instância 2/5
Exemplos // considerando: String s = "Aprog";
String substring( int índiceInício, int índiceFim )
Retorna nova string = substring da string sobre a qual é aplicado este método
Substring começa no índiceInício e estende-se até ao índiceFim-1
Comprimento da substring = índiceFim - índiceInício
Exemplo
String s2 = [Link](1,3); // s2 = "pr"
String substring( int índiceInício )
Retorna nova string = substring da string sobre a qual é aplicado este método
Substring começa no índiceInício e estende-se até ao fim da string
Exemplo
String s2 = [Link](1); // s2 = "prog"
char charAt( int índice )
Retorna carater que se encontra na posição índice
Exemplos
char c = [Link](0); // c = 'A'
char c = [Link](1); // c = 'p'
Nelson Freire (ISEP–DEI-APROG 2013/14) 15/43
String Métodos de Instância 3/5
Exemplos // considerando: String s = "Aprog";
boolean equalsIgnoreCase(String outraString)
Compara duas strings alfabeticamente e retorna
true Ex: [Link]("APROG") // compara strings s e "APROG"
false Ex: [Link]("ALIN")
Não distingue maiúsculas de minúsculas
Exemplo: if ( [Link]("APROG") )
[Link](" s=APROG ");
else s=APROG
[Link](" s≠APROG ");
boolean equals(String outraString)
Diferença do método anterior
Distingue maiúsculas de minúsculas
Exemplo: if ( [Link]("APROG") )
[Link](" s=APROG ");
else s≠APROG
[Link](" s≠APROG ");
Nelson Freire (ISEP–DEI-APROG 2013/14) 16/43
String Métodos de Instância 4/5
Exemplos // considerando: String s = "Aprog";
int compareTo(String outraString)
Compara duas strings alfabeticamente e retorna um número inteiro
Negativo Ex: [Link]("PPROG") s é anterior a "PPROG" Interesse
Positivo Ex: [Link]("ALIN") s é posterior a "ALIN" Ordenação
de strings
Zero Ex: [Link]("Aprog") s e "Aprog" são iguais
Distingue maiúsculas de minúsculas
Exemplos
if ( [Link]("APROG")==0 )
[Link](" s=APROG ");
else s≠APROG
[Link](" s≠APROG ");
String s1 = [Link](); // ler é instância de Scanner para ler teclado
String s2 = [Link]();
if ( [Link](s2)<0 )
[Link]("Strings ordenadas:" + s1 + "," + s2);
else
[Link]("Strings ordenadas:" + s2 + "," + s1);
int compareToIgnoreCase(String outraString)
Diferença do método anterior
Não distingue maiúsculas de minúsculas
Nelson Freire (ISEP–DEI-APROG 2013/14) 17/43
String Métodos de Instância 5/5
Exemplos
String replace(char antigo , char novo)
Retorna nova string com carater antigo substituído pelo carater novo (em todas as ocorrências)
Exemplo
String s = "solo";
String s2 = [Link]('o','a'); // s2 = "sala"
Nelson Freire (ISEP–DEI-APROG 2013/14) 18/43
String Método de Instância : split 1/2
Interesse
Decompor uma string em partes separadas por delimitadores (iguais ou diferentes)
Exemplo: Delimitadores Iguais
String registo = "joão/1961/10/1"; // campos do registo separados por /
Delimitador
Obtenção dos campos do registo
String[] campos; // vetor para guardar partes da string registo (campos)
campos = [Link]("/"); // 1º Decompõe registo pelo delimitador /
// 2º Cria vetor de strings (comprimento = nº partes)
// 3º Guarda as partes em elementos diferentes
Resultado
campos "joão" "1961" "10" "1"
0 1 2 3
Algoritmia
ED TEXTO registo, campos[ ]
INÍCIO
registo "joão/1961/10/1"
campos separar(registo, "/")
...
FIM
Nelson Freire (ISEP–DEI-APROG 2013/14) 19/43
String Método de Instância : split 2/2
Exemplo: Delimitadores Diferentes
String s = "4-5+6-7+8+9";
String[] c = [Link]("[+-]");
Resultado
c "4" "5" "6" "7" "8" "9"
0 1 2 3 4 5
Nelson Freire (ISEP–DEI-APROG 2013/14) 20/43
String Método de Classe : format 1/3
String format(String formato [, parametro1, parametro2, ..., parametroN]) // [ ...] significa opcional
Semelhante ao método [Link]
Retorna string formatada
Tem um ou mais parâmetros
formato especifica formato da string retornada
define texto e especificadores de formato da lista de parâmetros (1, 2, ... N)
Exemplo 1
2
double x = 12.346267;
String mensagem = [Link]("X=%8.2f",x); mensagem: X= 12,35
8
Texto Especificador de formato 3 espaços = 8-5
formato inclui +
(retorno literal) (representa parâmetro x e especifica o
seu formato: 8.2)
Exemplo 2
double media = 12.346267;
String nome ="Ana";
String mensagem = [Link]("A média das notas da aluna %s é %.2f", nome, media);
// String retornada mensagem = "A média das notas da aluna Ana é 12,35"
Nelson Freire (ISEP–DEI-APROG 2013/14) 21/43
String Método de Classe : format 2/3
Parâmetro formato
É uma string
Especifica formato da string retornada pelo método
Pode incluir
Texto // retornado literalmente
Carateres especiais // Ex: \n (newline) \t (tab)
Especificadores de formato
Tipos
Especiais // Ex: %n (newline) e %% (percentagem)
Normais // especificam formato da lista de parâmetros (1, 2, ..., N)
Correspondência entre especificador (E) e parâmetro (P)
Por omissão
Estabelecida pela ordem dos parâmetros (E1P1, E2P2,...)
Exemplo
String s = [Link]("Nota de %s é %d",nome,nota);
Método substitui especificadores pelos parâmetros correspondentes
Ex: s = "Nota de Nico é 20" // nome=Nico e nota=20
Nelson Freire (ISEP–DEI-APROG 2013/14) 22/43
String Método de Classe : format 3/3
Especificador de formato do parâmetro formato
Sintaxe: % [índice_parametro$] [flags] [dimensão] [.decimal] conversão // [...] = opcional
índice_par. : índice do parâmetro de substituição (inicial é 1) Ex: %1$d ("%1$d .... %1$d",i)
flags: - // alinhamento à esquerda (direita por omissão) Ex: %-4d, %-10s
+ // adiciona sinais para números positivos e negativos Ex: %+d +345 ou -498
0 // adiciona zeros à frente até preencher campo Ex: %04d 0045
, // adiciona separador de grupos Ex: %,.2f 3.456.789,23
dimensão : tamanho total reservado ao campo
decimal : número de casas decimais
conversão: tipo de parâmetro
d inteiro
f floating-point (double ou float)
s string
c carater
b booleano
o octal
h hexadecimal
Especiais: não são substituídos por parâmetros
n newline (evita problemas do \n porque é newline da plataforma)
% percentagem
Exemplos
int nota=20; String nome="Nico";
String s = [Link]("Nota de %s é %d %n", nome, nota); //s= Nota de Nico é 20
double taxa=12.34345;
String s = [Link]("Taxa de reprovados: %.2f%%",taxa); //s= Taxa de reprovados: 12.34%
Nelson Freire (ISEP–DEI-APROG 2013/14) 23/43
Classes Java Sumário
Scanner
JOptionPane
String
Character
Formatter
Calendar
Math
Integer
Long
Float
System
Nelson Freire (ISEP–DEI-APROG 2013/14) 24/43
Character Interesse
Métodos para
Determinar categoria de carater
Letra
Minúscula
Maiúscula
Dígito
Converter carateres
Minúsculas para maiúsculas
Vice-versa
Determinar valor numérico
Carateres do tipo dígito
Nelson Freire (ISEP–DEI-APROG 2013/14) 25/43
Character Métodos de Classe
boolean isLetter(char c) // Verifica se carater c é letra
boolean isDigit(char c) // Verifica se carater c é dígito
boolean isSpaceChar(char c) // Verifica se carater c é carater espaço
boolean isUpperCase(char c) // Verifica se carater c é maiúsculo
boolean isLowerCase(char c) // Verifica se carater c é minúsculo
char toUpperCase(char c) // Converte carater c num carater maiúsculo
char toLowerCase(char c) // Converte carater c num carater minúsculo
int getNumericValue(char c) // Retorna valor int que o carater c representa
// Retorna -1 se carater c não representa um int
Exemplos
char c = 'A';
if ( [Link](c) )
[Link](c + " é uma letra");
char c2 = [Link](c);
String s = "1T2X";
int digito = [Link]([Link](0)); // digito = 1
int codigo = [Link](0); // codigo = 49
Nelson Freire (ISEP–DEI-APROG 2013/14) 26/43
Classes Java Sumário
Scanner
JOptionPane
String
Character
Formatter
Calendar
Math
Integer
Long
Float
System
Nelson Freire (ISEP–DEI-APROG 2013/14) 27/43
Formatter Introdução
Package
[Link]
Interesse
Escrita Formatada
Ficheiro de texto
Saída da consola // Exemplo: Janela Linha de Comandos
Exemplos
Escrita de números reais com apenas n casas decimais
Exemplo: 12.5 % // com apenas 1 casa decimal
Escrita de tabela (colunas de largura fixa e alinhamentos específicos)
NOME IDADE
João 10 // alinhamentos à direita
Nelson Freire (ISEP–DEI-APROG 2013/14) 28/43
Formatter Escrita na Consola
1. Declaração de objeto da classe Formatter
Exemplo
Formatter out = new Formatter([Link]) ;
[Link] representa a saída da consola
Operador new contrói um objeto da classe Formatter para escrever na saída da
consola
out é uma instância (objeto) da classe Formatter
2. Escrita através do método format
Semelhante aos métodos
format da classe String // [Link](...)
printf de [Link] // [Link](...)
Exemplo
String nome = "Nico";
Nome: Nico
int idade = 23; Idade: 23
[Link]("Nome:%s %n Idade:%d %n", nome, idade);
Nelson Freire (ISEP–DEI-APROG 2013/14) 29/43
Classes Java Sumário
Scanner
JOptionPane
String
Character
Formatter
Calendar
Math
Integer
Long
Float
System
Nelson Freire (ISEP–DEI-APROG 2013/14) 30/43
Classes Java Classe Calendar
Package
[Link]
Interesse
Processar Tempos e Datas
Exemplos
Calendar hoje = [Link](); // hoje: guarda instante de tempo actual
int dia = [Link](Calendar.DAY_OF_MONTH);
int mes = [Link]([Link]);
int ano = [Link]([Link]);
int hora = [Link]([Link]);
int minuto = [Link]([Link]);
int segundo = [Link]([Link]);
Nelson Freire (ISEP–DEI-APROG 2013/14) 31/43
Classes Java Sumário
Scanner
JOptionPane
String
Character
Formatter
Calendar
Math
Integer
Long
Float
System
Nelson Freire (ISEP–DEI-APROG 2013/14) 32/43
Classes Java Classe Math
Interesse
Constantes Matemáticas // atributos da classe
Operações Numéricas Básicas e Funções Trigonométricas // métodos da classe
Métodos de Classe
double sqrt(double a) // Retorna raíz quadrada de a; Exemplo: d=[Link](3);
tipo abs(tipo a) // tipo = double, float, int ou long
// Retorna valor absoluto de a. Ex: [Link](-5)
double pow(double a, double b) // Retorna ab ; Exemplo: 25 [Link](2,5)
double exp(double a) // Retorna ea ; Exemplo: e5 [Link](5)
double random() // Retorna nº real aleatório do intervalo [0,1[
double cos(double angulo) // Retorna coseno do angulo em radianos
double sin(double angulo) // Retorna seno do angulo em radianos
double acos(double a) // Retorna arco coseno de a em radianos
double toDegrees(double angulo) // Converte angulo em radianos para graus
double toRadians(double angulo) // Converte angulo em graus para radianos
Atributos
final double PI // 3.14... Exemplo: [Link]
final double E // 2.71... Exemplo: Math.E
Nelson Freire (ISEP–DEI-APROG 2013/14) 33/43
Classes Java Sumário
Scanner
JOptionPane
String
Character
Formatter
Calendar
Math
Integer
Long
Float
System
Nelson Freire (ISEP–DEI-APROG 2013/14) 34/43
Classes Java Classe Integer
Método parseInt
Método de Classe
Aplicável à classe
Interesse
Converter uma string em int
Requisito
Carateres da string devem ser dígitos decimais
Exceção
1º carater
Sinal menos ... para indicar nº negativo
Sintaxe
int parseInt(String s)
Exemplo
String x = "-12";
int y = [Link](x);
String x2 = "-12";
int y2 = [Link](x2);
Nelson Freire (ISEP–DEI-APROG 2013/14) 35/43
Classes Java Sumário
Scanner
JOptionPane
String
Character
Formatter
Calendar
Math
Integer
Long
Float
System
Nelson Freire (ISEP–DEI-APROG 2013/14) 36/43
Classes Java Classe Long
Método parseLong
Método de Classe
Aplicável à classe
Interesse
Converter uma string em long
Requisito
Carateres da string devem ser dígitos decimais
Exceção
1º carater
Sinal menos ... para indicar nº negativo
Sintaxe
long parseLong(String s)
Exemplos
String x = "129876506543";
long y = [Link](x);
String x2 = "-129876506543";
long y2 = [Link](x2);
Nelson Freire (ISEP–DEI-APROG 2013/14) 37/43
Classes Java Sumário
Scanner
JOptionPane
String
Character
Formatter
Calendar
Math
Integer
Long
Float
System
Nelson Freire (ISEP–DEI-APROG 2013/14) 38/43
Classes Java Classe Float
Método parseFloat
Método de Classe
Aplicável à classe
Interesse
Converter uma string em float
Sintaxe
float parseFloat(String s)
Exemplo
String x = "12.98";
float y = [Link](x);
String x2 = "-12.98";
float y2 = [Link](x2);
Nelson Freire (ISEP–DEI-APROG 2013/14) 39/43
Classes Java Sumário
Scanner
JOptionPane
String
Character
Formatter
Calendar
Math
Integer
Long
Float
System
Nelson Freire (ISEP–DEI-APROG 2013/14) 40/43
System Método [Link] 1/3
Semântica
Escreve string formatada ... na saída do computador
Sintaxe
[Link]( String formato [, parametro1, parametro2, ..., parametroN] )
Tem um ou mais parâmetros
[...] significa opcional
formato especifica formato da string escrita
define texto e especificadores de formato da lista de parâmetros (1,2, ... N)
Exemplo 1
2
double x = 12.346267;
[Link]("X=%8.2f",x); Saída: X= 12,35
8
Texto Especificador de formato 3 espaços = 8-5
formato inclui +
(escrita literal) (representa parâmetro x e
especifica o seu formato: 8.2)
Exemplo 2
double media = 12.346267;
String nome ="Ana";
[Link]("A média das notas da aluna %s é %.2f", nome, media);
// Saída formatada : A média das notas da aluna Ana é 12,35
Nelson Freire (ISEP–DEI-APROG 2013/14) 41/43
System Método [Link] 2/3
Parâmetro formato
É uma string
Especifica formato da string que o método escreve
Pode incluir
Texto // escrito literalmente
Carateres especiais // Ex: \n (newline) \t (tab)
Especificadores de formato
Tipos
Especiais // Ex: %n (newline) e %% (percentagem)
Normais // especificam formato da lista de parâmetros (1, 2, ..., N)
Correspondência entre especificador (E) e parâmetro (P)
Por omissão
Estabelecida pela ordem dos parâmetros (E1P1, E2P2,...)
Exemplo
[Link]("Nota de %s é %d",nome,nota);
Método substitui especificadores pelos parâmetros correspondentes
Ex: s = "Nota de Nico é 20" // nome=Nico e nota=20
Nelson Freire (ISEP–DEI-APROG 2013/14) 42/43
System Método [Link] 3/3
Especificador de formato do parâmetro formato
Sintaxe: % [índice_parametro$] [flags] [dimensão] [.decimal] conversão // [...] = opcional
índice_par. : índice do parâmetro de substituição (inicial é 1) Ex: %1$d ("%1$d .... %1$d",i)
flags: - // alinhamento à esquerda (direita por omissão) Ex: %-4d, %-10s
+ // adiciona sinais para números positivos e negativos Ex: %+d +345 ou -498
0 // adiciona zeros à frente até preencher campo Ex: %04d 0045
, // adiciona separador de grupos Ex: %,.2f 3.456.789,23
dimensão : tamanho total reservado ao campo
decimal : número de casas decimais
conversão: tipo de parâmetro
d inteiro
f floating-point (double ou float)
s string
c carater
b booleano
o octal
h hexadecimal
Especiais: não são substituídos por parâmetros
n newline (evita problemas do \n porque é newline da plataforma)
% percentagem
Exemplos
int nota=20; String nome="Nico";
[Link]("Nota de %s é %d %n", nome, nota); //saída: Nota de Nico é 20
double taxa=12.34345;
[Link]("Taxa de reprovados: %.2f%%",taxa); //saída: Taxa de reprovados: 12.34%
Nelson Freire (ISEP–DEI-APROG 2013/14) 43/43