SlideShare uma empresa Scribd logo
1 de 140
Baixar para ler offline
Aula 16 – Strings, Entrada e Busca
Sequencial
Norton Trevisan Roman
2 de maio de 2020
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 1 / 33
Revendo Strings
At´e agora, como hav´ıamos definido strings?
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 2 / 33
Revendo Strings
At´e agora, como hav´ıamos definido strings?
Arranjos de caracteres public static void main(String[] args) {
char[] str = {’o’,’b’,’a’};
char[] str2 = new char[2];
str2[0] = ’e’;
str2[1] = ’i’;
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 2 / 33
Revendo Strings
At´e agora, como hav´ıamos definido strings?
Arranjos de caracteres
Embora funcione, seu
uso ´e bastante
limitado em Java
public static void main(String[] args) {
char[] str = {’o’,’b’,’a’};
char[] str2 = new char[2];
str2[0] = ’e’;
str2[1] = ’i’;
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 2 / 33
Revendo Strings
At´e agora, como hav´ıamos definido strings?
Arranjos de caracteres
Embora funcione, seu
uso ´e bastante
limitado em Java
Felizmente, h´a uma
classe Java definida
apenas para o uso de
strings:
public static void main(String[] args) {
char[] str = {’o’,’b’,’a’};
char[] str2 = new char[2];
str2[0] = ’e’;
str2[1] = ’i’;
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 2 / 33
Revendo Strings
At´e agora, como hav´ıamos definido strings?
Arranjos de caracteres
Embora funcione, seu
uso ´e bastante
limitado em Java
Felizmente, h´a uma
classe Java definida
apenas para o uso de
strings:
public static void main(String[] args) {
char[] str = {’o’,’b’,’a’};
char[] str2 = new char[2];
str2[0] = ’e’;
str2[1] = ’i’;
}
public static void main(String[] args) {
String s = "Meu string";
System.out.println(s);
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 2 / 33
Revendo Strings
Podemos ent˜ao
reescrever os
nomes dos
materiais da
piscina
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 3 / 33
Revendo Strings
Podemos ent˜ao
reescrever os
nomes dos
materiais da
piscina
De...
static char[][] nomes = {{’A’,’l’,’v’,
’e’,’n’,’a’,’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’},
{’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,’c’,’o’}};
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 3 / 33
Revendo Strings
Podemos ent˜ao
reescrever os
nomes dos
materiais da
piscina
De...
Para...
static char[][] nomes = {{’A’,’l’,’v’,
’e’,’n’,’a’,’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’},
{’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,’c’,’o’}};
static String[] nomes = {"Alvenaria",
"Vinil",
"Fibra",
"Pl´astico"};
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 3 / 33
Strings
Como fazemos
para acessarmos o
caractere em uma
determinada
posi¸c˜ao no string?
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 4 / 33
Strings
Como fazemos
para acessarmos o
caractere em uma
determinada
posi¸c˜ao no string?
public static void main(String[] args)
{
String s = "Meu string";
System.out.println(s[4]);
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 4 / 33
Strings
Como fazemos
para acessarmos o
caractere em uma
determinada
posi¸c˜ao no string?
public static void main(String[] args)
{
String s = "Meu string";
System.out.println(s[4]);
}
AreaPiscina.java:102: array required, but java.lang.String
found
System.out.println(s[4]);
^
1 error
Strings n˜ao s˜ao arranjos!
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 4 / 33
Strings
Como fazemos
para acessarmos o
caractere em uma
determinada
posi¸c˜ao no string?
public static void main(String[] args)
{
String s = "Meu string";
System.out.println(s.charAt(4));
}
AreaPiscina.java:102: array required, but java.lang.String
found
System.out.println(s[4]);
^
1 error
Strings n˜ao s˜ao arranjos! Deve-se usar o m´etodo charAt()
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 4 / 33
Strings
E como podemos modificar um caractere no String?
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 5 / 33
Strings
E como podemos modificar um caractere no String?
N˜ao podemos. Objetos
String s˜ao constantes
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 5 / 33
Strings
E como podemos modificar um caractere no String?
N˜ao podemos. Objetos
String s˜ao constantes
N˜ao podem ser
mudados ap´os terem
sido criados
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 5 / 33
Strings
E como podemos modificar um caractere no String?
N˜ao podemos. Objetos
String s˜ao constantes
N˜ao podem ser
mudados ap´os terem
sido criados
public static void main(String[] args) {
String s = "Meu string";
char[] s2 = s.toCharArray();
s2[4] = ’b’;
s = String.valueOf(s2);
//ou s = new String(s2);
System.out.println(s);
}
Solu¸c˜ao: transformar em arranjo...
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 5 / 33
Strings
E como podemos modificar um caractere no String?
N˜ao podemos. Objetos
String s˜ao constantes
N˜ao podem ser
mudados ap´os terem
sido criados
public static void main(String[] args) {
String s = "Meu string";
char[] s2 = s.toCharArray();
s2[4] = ’b’;
s = String.valueOf(s2);
//ou s = new String(s2);
System.out.println(s);
}
Solu¸c˜ao: transformar em arranjo...
Sempre criar´a um novo objeto
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 5 / 33
Olhando mais de perto...
O que houve com
‘‘Meu string’’?
public static void main(String[]
args) {
String s = "Meu string";
char[] s2 = s.toCharArray();
s2[4] = ’b’;
s = String.valueOf(s2);
//ou s = new String(s2);
System.out.println(s);
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
Olhando mais de perto...
O que houve com
‘‘Meu string’’?
Vejamos o
comportamento da
mem´oria:
public static void main(String[]
args) {
String s = "Meu string";
char[] s2 = s.toCharArray();
s2[4] = ’b’;
s = String.valueOf(s2);
//ou s = new String(s2);
System.out.println(s);
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
Olhando mais de perto...
O que houve com
‘‘Meu string’’?
Vejamos o
comportamento da
mem´oria:
public static void main(String[]
args) {
String s = "Meu string";
char[] s2 = s.toCharArray();
s2[4] = ’b’;
s = String.valueOf(s2);
//ou s = new String(s2);
System.out.println(s);
}
Classe ???
main
args
0x23f
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
Olhando mais de perto...
O que houve com
‘‘Meu string’’?
Vejamos o
comportamento da
mem´oria:
public static void main(String[]
args) {
String s = "Meu string";
char[] s2 = s.toCharArray();
s2[4] = ’b’;
s = String.valueOf(s2);
//ou s = new String(s2);
System.out.println(s);
}
Classe ???
main
args
0x23f
s
0xfdf
0xdaf
(0xdaf)
???
0xa23
“Meu string”
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
Olhando mais de perto...
O que houve com
‘‘Meu string’’?
Vejamos o
comportamento da
mem´oria:
public static void main(String[]
args) {
String s = "Meu string";
char[] s2 = s.toCharArray();
s2[4] = ’b’;
s = String.valueOf(s2);
//ou s = new String(s2);
System.out.println(s);
}
Classe ???
main
args
0x23f
s
0xfdf
0xdaf
(0xdaf)
???
0xa23
“Meu string”
toCharArray
???
s2
0x98a
0x158
0x158
M e u s t r . . .
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
Olhando mais de perto...
O que houve com
‘‘Meu string’’?
Vejamos o
comportamento da
mem´oria:
public static void main(String[]
args) {
String s = "Meu string";
char[] s2 = s.toCharArray();
s2[4] = ’b’;
s = String.valueOf(s2);
//ou s = new String(s2);
System.out.println(s);
}
Classe ???
main
args
0x23f
s
0xfdf
0xdaf
(0xdaf)
???
0xa23
“Meu string”
s2
0x98a
0x158
0x158
M e u b t r . . .
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
Olhando mais de perto...
O que houve com
‘‘Meu string’’?
Vejamos o
comportamento da
mem´oria:
public static void main(String[]
args) {
String s = "Meu string";
char[] s2 = s.toCharArray();
s2[4] = ’b’;
s = String.valueOf(s2);
//ou s = new String(s2);
System.out.println(s);
}
Classe ???
main
args
0x23f
s
0xfdf
0xd23
(0xdaf)
???
0xa23
“Meu string”
s2
0x98a
0x158
0x158
M e u b t r . . .
(0xd23)
???
0xab3
“Meu dtring”
String
ValueOf
???
0x236
0x158
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
Olhando mais de perto...
O que houve com
‘‘Meu string’’?
Vejamos o
comportamento da
mem´oria:
O primeiro objeto String
teve sua referˆencia perdida
public static void main(String[]
args) {
String s = "Meu string";
char[] s2 = s.toCharArray();
s2[4] = ’b’;
s = String.valueOf(s2);
//ou s = new String(s2);
System.out.println(s);
}
Classe ???
main
args
0x23f
s
0xfdf
0xd23
(0xdaf)
???
0xa23
“Meu string”
s2
0x98a
0x158
0x158
M e u b t r . . .
(0xd23)
???
0xab3
“Meu dtring”
String
ValueOf
???
0x236
0x158
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
Olhando mais de perto...
O que houve com
‘‘Meu string’’?
Vejamos o
comportamento da
mem´oria:
O primeiro objeto String
teve sua referˆencia perdida
Ser´a desalocado pelo
garbage collector
public static void main(String[]
args) {
String s = "Meu string";
char[] s2 = s.toCharArray();
s2[4] = ’b’;
s = String.valueOf(s2);
//ou s = new String(s2);
System.out.println(s);
}
Classe ???
main
args
0x23f
s
0xfdf
0xd23
(0xdaf)
???
0xa23
“Meu string”
s2
0x98a
0x158
0x158
M e u b t r . . .
(0xd23)
???
0xab3
“Meu dtring”
String
ValueOf
???
0x236
0x158
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
Strings
O que acontece se fizermos str1 == str2?
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 7 / 33
Strings
O que acontece se fizermos str1 == str2?
Ser˜ao comparadas as referˆencias (endere¸cos)
Ser´a true somente se ambos str1 e str2 contiverem o
mesmo endere¸co na mem´oria
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 7 / 33
Strings
O que acontece se fizermos str1 == str2?
Ser˜ao comparadas as referˆencias (endere¸cos)
Ser´a true somente se ambos str1 e str2 contiverem o
mesmo endere¸co na mem´oria
String str1 = "Exemplo";
String str2 = new String("Exemplo");
String str3 = "Outro exemplo";
if (str1 == str2) ...
if (str1 == str3) ...
str3 = str1;
if (str1 == str3) ...
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 7 / 33
Strings
O que acontece se fizermos str1 == str2?
Ser˜ao comparadas as referˆencias (endere¸cos)
Ser´a true somente se ambos str1 e str2 contiverem o
mesmo endere¸co na mem´oria
String str1 = "Exemplo";
String str2 = new String("Exemplo");
String str3 = "Outro exemplo";
if (str1 == str2) ... // false (objetos diferentes)
if (str1 == str3) ...
str3 = str1;
if (str1 == str3) ...
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 7 / 33
Strings
O que acontece se fizermos str1 == str2?
Ser˜ao comparadas as referˆencias (endere¸cos)
Ser´a true somente se ambos str1 e str2 contiverem o
mesmo endere¸co na mem´oria
String str1 = "Exemplo";
String str2 = new String("Exemplo");
String str3 = "Outro exemplo";
if (str1 == str2) ... // false (objetos diferentes)
if (str1 == str3) ... // false (objetos diferentes)
str3 = str1;
if (str1 == str3) ...
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 7 / 33
Strings
O que acontece se fizermos str1 == str2?
Ser˜ao comparadas as referˆencias (endere¸cos)
Ser´a true somente se ambos str1 e str2 contiverem o
mesmo endere¸co na mem´oria
String str1 = "Exemplo";
String str2 = new String("Exemplo");
String str3 = "Outro exemplo";
if (str1 == str2) ... // false (objetos diferentes)
if (str1 == str3) ... // false (objetos diferentes)
str3 = str1;
if (str1 == str3) ... // true (mesmo objeto)
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 7 / 33
Strings
E se fizermos... public static void main(
String[] args) {
String s = "Meu string";
s = s + "oba";
s = s + ’c’;
s = s + 4;
s = s + 23.5;
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
Strings
E se fizermos...
s = “Meu string”
public static void main(
String[] args) {
String s = "Meu string";
s = s + "oba";
s = s + ’c’;
s = s + 4;
s = s + 23.5;
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
Strings
E se fizermos...
s = “Meu string”
s = “Meu stringoba”
public static void main(
String[] args) {
String s = "Meu string";
s = s + "oba";
s = s + ’c’;
s = s + 4;
s = s + 23.5;
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
Strings
E se fizermos...
s = “Meu string”
s = “Meu stringoba”
s = “Meu stringobac”
public static void main(
String[] args) {
String s = "Meu string";
s = s + "oba";
s = s + ’c’;
s = s + 4;
s = s + 23.5;
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
Strings
E se fizermos...
s = “Meu string”
s = “Meu stringoba”
s = “Meu stringobac”
s = “Meu stringobac4”
public static void main(
String[] args) {
String s = "Meu string";
s = s + "oba";
s = s + ’c’;
s = s + 4;
s = s + 23.5;
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
Strings
E se fizermos...
s = “Meu string”
s = “Meu stringoba”
s = “Meu stringobac”
s = “Meu stringobac4”
public static void main(
String[] args) {
String s = "Meu string";
s = s + "oba";
s = s + ’c’;
s = s + 4;
s = s + 23.5;
}
s = “Meu stringobac423.5”
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
Strings
E se fizermos...
s = “Meu string”
s = “Meu stringoba”
s = “Meu stringobac”
s = “Meu stringobac4”
public static void main(
String[] args) {
String s = "Meu string";
s = s + "oba";
s = s + ’c’;
s = s + 4;
s = s + 23.5;
}
s = “Meu stringobac423.5”
Como strings s˜ao imut´aveis, a cada mudan¸ca
criamos nova c´opia na mem´oria
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
Strings
E se fizermos...
s = “Meu string”
s = “Meu stringoba”
s = “Meu stringobac”
s = “Meu stringobac4”
public static void main(
String[] args) {
String s = "Meu string";
s = s + "oba";
s = s + ’c’;
s = s + 4;
s = s + 23.5;
}
s = “Meu stringobac423.5”
Como strings s˜ao imut´aveis, a cada mudan¸ca
criamos nova c´opia na mem´oria
Sobrescrevendo o endere¸co que havia em s
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
Strings
E se fizermos...
s = “Meu string”
s = “Meu stringoba”
s = “Meu stringobac”
s = “Meu stringobac4”
public static void main(
String[] args) {
String s = "Meu string";
s = s + "oba";
s = s + ’c’;
s = s + 4;
s = s + 23.5;
}
s = “Meu stringobac423.5”
Como strings s˜ao imut´aveis, a cada mudan¸ca
criamos nova c´opia na mem´oria
Sobrescrevendo o endere¸co que havia em s
E perdendo assim a referˆencia `a c´opia antiga
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
Strings
Como fazer para
comparar dois strings?
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 9 / 33
Strings
Como fazer para
comparar dois strings?
m´etodo equals
public static void main(String[]
args) {
String s = "Meu string";
String s2 = "Meu string";
System.out.println(
s.equals(s2));
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 9 / 33
Strings
Como fazer para
comparar dois strings?
m´etodo equals
E para saber o tamanho
de um string?
public static void main(String[]
args) {
String s = "Meu string";
String s2 = "Meu string";
System.out.println(
s.equals(s2));
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 9 / 33
Strings
Como fazer para
comparar dois strings?
m´etodo equals
E para saber o tamanho
de um string?
m´etodo length
public static void main(String[]
args) {
String s = "Meu string";
String s2 = "Meu string";
System.out.println(
s.equals(s2));
System.out.println(s.length());
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 9 / 33
Strings
Como fazer para
comparar dois strings?
m´etodo equals
E para saber o tamanho
de um string?
m´etodo length
public static void main(String[]
args) {
String s = "Meu string";
String s2 = "Meu string";
System.out.println(
s.equals(s2));
System.out.println(s.length());
}
http://docs.oracle.com/javase/7/docs/api/
java/lang/String.html
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 9 / 33
Strings
O que ser´a
impresso?
public static void main(String[] args)
{
String s1 = "Bom dia";
String s2 = s1;
s1 = "Boa noite";
System.out.println(s2);
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 10 / 33
Strings
O que ser´a
impresso?
public static void main(String[] args)
{
String s1 = "Bom dia";
String s2 = s1;
s1 = "Boa noite";
System.out.println(s2);
}
Classe ???
main
args
0x23f
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 10 / 33
Strings
O que ser´a
impresso?
public static void main(String[] args)
{
String s1 = "Bom dia";
String s2 = s1;
s1 = "Boa noite";
System.out.println(s2);
}
Classe ???
main
args
0x23f
s1
0xfdf
0xdaf
(0xdaf)
???
0xa23
“Bom dia”
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 10 / 33
Strings
O que ser´a
impresso?
public static void main(String[] args)
{
String s1 = "Bom dia";
String s2 = s1;
s1 = "Boa noite";
System.out.println(s2);
}
Classe ???
main
args
0x23f
s1
0xfdf
0xdaf
(0xdaf)
???
0xa23
“Bom dia”
s2
0x98a
0xdaf
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 10 / 33
Strings
O que ser´a
impresso?
public static void main(String[] args)
{
String s1 = "Bom dia";
String s2 = s1;
s1 = "Boa noite";
System.out.println(s2);
}
Classe ???
main
args
0x23f
s1
0xfdf
0x22f
(0xdaf)
???
0xa23
“Bom dia”
s2
0x98a
0xdaf
(0x22f)
???
0x526
“Boa noite”
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 10 / 33
Strings
O que ser´a
impresso?
“Bom dia”
public static void main(String[] args)
{
String s1 = "Bom dia";
String s2 = s1;
s1 = "Boa noite";
System.out.println(s2);
}
Classe ???
main
args
0x23f
s1
0xfdf
0x22f
(0xdaf)
???
0xa23
“Bom dia”
s2
0x98a
0xdaf
(0x22f)
???
0x526
“Boa noite”
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 10 / 33
Strings
E qual a sa´ıda desse
c´odigo?
class Teste {
void misterio(String y) {
y = "Novo string";
}
public static void main(String[] args) {
String x = "String antigo";
Teste a = new Teste();
a.misterio(x);
System.out.println(x);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
Strings
E qual a sa´ıda desse
c´odigo?
class Teste {
void misterio(String y) {
y = "Novo string";
}
public static void main(String[] args) {
String x = "String antigo";
Teste a = new Teste();
a.misterio(x);
System.out.println(x);
}
}
Teste
main
args
0x23f
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
Strings
E qual a sa´ıda desse
c´odigo?
class Teste {
void misterio(String y) {
y = "Novo string";
}
public static void main(String[] args) {
String x = "String antigo";
Teste a = new Teste();
a.misterio(x);
System.out.println(x);
}
}
Teste
main
args
0x23f
x
0xfdf
0xdaf
(0xdaf)
???
0xa23
“String antigo”
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
Strings
E qual a sa´ıda desse
c´odigo?
class Teste {
void misterio(String y) {
y = "Novo string";
}
public static void main(String[] args) {
String x = "String antigo";
Teste a = new Teste();
a.misterio(x);
System.out.println(x);
}
}
Teste
main
args
0x23f
x
0xfdf
0xdaf
(0xdaf)
???
0xa23
“String antigo”
a
0x00f
0x22f
(0x22f)
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
Strings
E qual a sa´ıda desse
c´odigo?
class Teste {
void misterio(String y) {
y = "Novo string";
}
public static void main(String[] args) {
String x = "String antigo";
Teste a = new Teste();
a.misterio(x);
System.out.println(x);
}
}
Teste
main
args
0x23f
x
0xfdf
0xdaf
(0xdaf)
???
0xa23
“String antigo”
a
0x00f
0x22f
(0x22f)
misterio
y
0x652
0xdaf
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
Strings
E qual a sa´ıda desse
c´odigo?
class Teste {
void misterio(String y) {
y = "Novo string";
}
public static void main(String[] args) {
String x = "String antigo";
Teste a = new Teste();
a.misterio(x);
System.out.println(x);
}
}
Teste
main
args
0x23f
x
0xfdf
0xdaf
(0xdaf)
???
0xa23
“String antigo”
a
0x00f
0x22f
(0x22f)
misterio
y
0x652
0xd22
(0xd22)
???
0xaab
“Novo string”
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
Strings
E qual a sa´ıda desse
c´odigo?
“String antigo”
class Teste {
void misterio(String y) {
y = "Novo string";
}
public static void main(String[] args) {
String x = "String antigo";
Teste a = new Teste();
a.misterio(x);
System.out.println(x);
}
}
Teste
main
args
0x23f
x
0xfdf
0xdaf
(0xdaf)
???
0xa23
“String antigo”
a
0x00f
0x22f
(0x22f)
misterio
y
0x652
0xd22
(0xd22)
???
0xaab
“Novo string”
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
Strings
E qual a sa´ıda desse
c´odigo?
“String antigo”
Modificamos o
parˆametro, e n˜ao a
vari´avel do objeto
class Teste {
void misterio(String y) {
y = "Novo string";
}
public static void main(String[] args) {
String x = "String antigo";
Teste a = new Teste();
a.misterio(x);
System.out.println(x);
}
}
Teste
main
args
0x23f
x
0xfdf
0xdaf
(0xdaf)
???
0xa23
“String antigo”
a
0x00f
0x22f
(0x22f)
misterio
y
0x652
0xd22
(0xd22)
???
0xaab
“Novo string”
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
Parˆametros da Linha de Comando
Considere o
m´etodo main public static void main(String[]
args) {
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 12 / 33
Parˆametros da Linha de Comando
Considere o
m´etodo main
O que s˜ao esses
args?
public static void main(String[]
args) {
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 12 / 33
Parˆametros da Linha de Comando
Considere o
m´etodo main
O que s˜ao esses
args?
S˜ao um arranjo de
Strings
public static void main(String[]
args) {
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 12 / 33
Parˆametros da Linha de Comando
Considere o
m´etodo main
O que s˜ao esses
args?
S˜ao um arranjo de
Strings
public static void main(String[]
args) {
for (String arg : args)
System.out.println(arg);
}
E o que o c´odigo no for faz?
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 12 / 33
Parˆametros da Linha de Comando
Vamos ver...
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
Parˆametros da Linha de Comando
Vamos ver... $java AreaPiscina
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
Parˆametros da Linha de Comando
Vamos ver... $java AreaPiscina
$ java AreaPiscina oba
oba
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
Parˆametros da Linha de Comando
Vamos ver... $java AreaPiscina
$ java AreaPiscina oba
oba
$ java AreaPiscina oba 23
oba
23
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
Parˆametros da Linha de Comando
Vamos ver... $java AreaPiscina
$ java AreaPiscina oba
oba
$ java AreaPiscina oba 23
oba
23
$ java AreaPiscina oba 23 eba
oba
23
eba
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
Parˆametros da Linha de Comando
Vamos ver...
Escreve os argumentos
passados na linha de
comando
$java AreaPiscina
$ java AreaPiscina oba
oba
$ java AreaPiscina oba 23
oba
23
$ java AreaPiscina oba 23 eba
oba
23
eba
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
Parˆametros da Linha de Comando
Vamos ver...
Escreve os argumentos
passados na linha de
comando
Informa¸c˜oes adicionais
separadas por espa¸co
$java AreaPiscina
$ java AreaPiscina oba
oba
$ java AreaPiscina oba 23
oba
23
$ java AreaPiscina oba 23 eba
oba
23
eba
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
Parˆametros da Linha de Comando
Vamos ver...
Escreve os argumentos
passados na linha de
comando
Informa¸c˜oes adicionais
separadas por espa¸co
Usadas para passar
alguma informa¸c˜ao inicial
ao programa
$java AreaPiscina
$ java AreaPiscina oba
oba
$ java AreaPiscina oba 23
oba
23
$ java AreaPiscina oba 23 eba
oba
23
eba
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
Parˆametros da Linha de Comando
Vamos ver...
Escreve os argumentos
passados na linha de
comando
Informa¸c˜oes adicionais
separadas por espa¸co
Usadas para passar
alguma informa¸c˜ao inicial
ao programa
$java AreaPiscina
$ java AreaPiscina oba
oba
$ java AreaPiscina oba 23
oba
23
$ java AreaPiscina oba 23 eba
oba
23
eba
Ent˜ao args nos d´a um arranjo com cada argumento
passado ao programa, na ordem em que ´e passado
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
Parˆametros da Linha de Comando
Poder´ıamos, por
exemplo, usar a
linha de
comando para
definir o material
de uma piscina
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 14 / 33
Parˆametros da Linha de Comando
Poder´ıamos, por
exemplo, usar a
linha de
comando para
definir o material
de uma piscina
class AreaPiscina {
...
static int tipoMat(String nome) {
for (int i=0; i<nomes.length; i++) {
if (nomes[i].equals(nome)) return(i);
}
return(-1);
}
public static void main(String[] args) {
if (args.length != 1) System.out.println(
"N´umero de par^ametros inv´alido");
else {
AreaPiscina p = new AreaPiscina();
int material = AreaPiscina.tipoMat(args[0]);
if (material != -1)
System.out.println(p.valor(p.area(),
material));
else
System.out.println("Material inv´alido");
}
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 14 / 33
Parˆametros da Linha de Comando
Linha de Comando
$ java AreaPiscina
N´umero de par^ametros inv´alido
$ java AreaPiscina Pl´astic
Material inv´alido
$ java AreaPiscina Pl´astico
157079.63267948967
$ java AreaPiscina Alvenaria
471238.89803846896
class AreaPiscina {
...
static int tipoMat(String nome) {
for (int i=0; i<nomes.length; i++) {
if (nomes[i].equals(nome)) return(i);
}
return(-1);
}
public static void main(String[] args) {
if (args.length != 1) System.out.println(
"N´umero de par^ametros inv´alido");
else {
AreaPiscina p = new AreaPiscina();
int material = AreaPiscina.tipoMat(args[0]);
if (material != -1)
System.out.println(p.valor(p.area(),
material));
else
System.out.println("Material inv´alido");
}
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 15 / 33
Parˆametros da Linha de Comando
Ou poder´ıamos us´a-la
para definir o material e
o raio de uma piscina
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 16 / 33
Parˆametros da Linha de Comando
Ou poder´ıamos us´a-la
para definir o material e
o raio de uma piscina
class AreaPiscina {
...
public static void main(String[] args){
if (args.length != 2) System.out.
println("N´umero de par^ametros
inv´alido");
else {
int material =
AreaPiscina.tipoMat(args[0]);
AreaPiscina p = new AreaPiscina(
Double.parseDouble(args[1]));
if (material != -1)
System.out.println(p.valor(
p.area(),material));
else
System.out.println("Material
inv´alido");
}
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 16 / 33
Parˆametros da Linha de Comando
Ou poder´ıamos us´a-la
para definir o material e
o raio de uma piscina
Como a linha de comando
tem s´o strings, temos que
converter
class AreaPiscina {
...
public static void main(String[] args){
if (args.length != 2) System.out.
println("N´umero de par^ametros
inv´alido");
else {
int material =
AreaPiscina.tipoMat(args[0]);
AreaPiscina p = new AreaPiscina(
Double.parseDouble(args[1]));
if (material != -1)
System.out.println(p.valor(
p.area(),material));
else
System.out.println("Material
inv´alido");
}
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 16 / 33
Parˆametros da Linha de Comando
Ou poder´ıamos us´a-la
para definir o material e
o raio de uma piscina
Como a linha de comando
tem s´o strings, temos que
converter
Para isso usamos m´etodos
da classe Double
class AreaPiscina {
...
public static void main(String[] args){
if (args.length != 2) System.out.
println("N´umero de par^ametros
inv´alido");
else {
int material =
AreaPiscina.tipoMat(args[0]);
AreaPiscina p = new AreaPiscina(
Double.parseDouble(args[1]));
if (material != -1)
System.out.println(p.valor(
p.area(),material));
else
System.out.println("Material
inv´alido");
}
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 16 / 33
Parˆametros da Linha de Comando
Ou poder´ıamos us´a-la
para definir o material e
o raio de uma piscina
Como a linha de comando
tem s´o strings, temos que
converter
Para isso usamos m´etodos
da classe Double
Linha de Comando
$ java AreaPiscina Alvenaria 10
471238.89803846896
$ java AreaPiscina Alvenaria 20
1884955.5921538759
class AreaPiscina {
...
public static void main(String[] args){
if (args.length != 2) System.out.
println("N´umero de par^ametros
inv´alido");
else {
int material =
AreaPiscina.tipoMat(args[0]);
AreaPiscina p = new AreaPiscina(
Double.parseDouble(args[1]));
if (material != -1)
System.out.println(p.valor(
p.area(),material));
else
System.out.println("Material
inv´alido");
}
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 16 / 33
Parˆametros da Linha de Comando
Todo tipo primitivo tem sua classe equivalente
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 17 / 33
Parˆametros da Linha de Comando
Todo tipo primitivo tem sua classe equivalente
Todas, `a exce¸c˜ao de Character, com o m´etodo
parseTipo(String s)
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 17 / 33
Parˆametros da Linha de Comando
Todo tipo primitivo tem sua classe equivalente
Todas, `a exce¸c˜ao de Character, com o m´etodo
parseTipo(String s)
Primitivo Classe parse
int Integer parseInt(String s)
long Long parseLong(String s)
float Float parseFloat(String s)
double Double parseDouble(String s)
boolean Boolean parseBoolean(String s)
char Character –
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 17 / 33
Parˆametros da Linha de Comando
Todo tipo primitivo tem sua classe equivalente
Todas, `a exce¸c˜ao de Character, com o m´etodo
parseTipo(String s)
Primitivo Classe parse
int Integer parseInt(String s)
long Long parseLong(String s)
float Float parseFloat(String s)
double Double parseDouble(String s)
boolean Boolean parseBoolean(String s)
char Character –
http://download.oracle.com/javase/6/docs/api/
overview-summary.html
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 17 / 33
Entrada
Entrada via linha
de comando,
embora
interessante, ´e
limitada
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 18 / 33
Entrada
Entrada via linha
de comando,
embora
interessante, ´e
limitada
Reduz as
possibilidades de
intera¸c˜ao com o
usu´ario
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 18 / 33
Entrada
O ideal seria
trocar mensagens
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 19 / 33
Entrada
O ideal seria
trocar mensagens
Escrevendo coisas
na tela
(println())
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 19 / 33
Entrada
O ideal seria
trocar mensagens
Escrevendo coisas
na tela
(println())
Lendo coisas do
teclado
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 19 / 33
Entrada
O ideal seria
trocar mensagens
Escrevendo coisas
na tela
(println())
Lendo coisas do
teclado
Como?
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 19 / 33
Entrada
O ideal seria
trocar mensagens
Escrevendo coisas
na tela
(println())
Lendo coisas do
teclado
Como? Via
Scanner (Java ≥
5)
import java.util.Scanner;
class Projeto {
Residencia[] condominio;
...
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Quantas resid^encias h´a no
condom´ınio? ");
String sTotal = entrada.nextLine();
int nRes = Integer.parseInt(sTotal);
Projeto proj = new Projeto(nRes);
for (int i=0; i<nRes; i++) {
Residencia res = new Residencia(
new AreaCasa(),new AreaPiscina());
proj.adicionaRes(res);
}
System.out.println(proj.condominio.length);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 19 / 33
Entrada – Olhando mais de perto
Primeiro temos
que dizer ao
compilador onde
Scanner est´a
import java.util.Scanner;
class Projeto {
Residencia[] condominio;
...
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Quantas resid^encias h´a no
condom´ınio? ");
String sTotal = entrada.nextLine();
int nRes = Integer.parseInt(sTotal);
Projeto proj = new Projeto(nRes);
for (int i=0; i<nRes; i++) {
Residencia res = new Residencia(
new AreaCasa(),new AreaPiscina());
proj.adicionaRes(res);
}
System.out.println(proj.condominio.length);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 20 / 33
Entrada – Olhando mais de perto
Primeiro temos
que dizer ao
compilador onde
Scanner est´a
Criamos ent˜ao o
objeto Scanner,
que deve ler da
entrada padr˜ao de
nosso programa
(teclado)
import java.util.Scanner;
class Projeto {
Residencia[] condominio;
...
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Quantas resid^encias h´a no
condom´ınio? ");
String sTotal = entrada.nextLine();
int nRes = Integer.parseInt(sTotal);
Projeto proj = new Projeto(nRes);
for (int i=0; i<nRes; i++) {
Residencia res = new Residencia(
new AreaCasa(),new AreaPiscina());
proj.adicionaRes(res);
}
System.out.println(proj.condominio.length);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 20 / 33
Entrada – Olhando mais de perto
Fazemos a
pergunta...
import java.util.Scanner;
class Projeto {
Residencia[] condominio;
...
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Quantas resid^encias h´a no
condom´ınio? ");
String sTotal = entrada.nextLine();
int nRes = Integer.parseInt(sTotal);
Projeto proj = new Projeto(nRes);
for (int i=0; i<nRes; i++) {
Residencia res = new Residencia(
new AreaCasa(),new AreaPiscina());
proj.adicionaRes(res);
}
System.out.println(proj.condominio.length);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 21 / 33
Entrada – Olhando mais de perto
Fazemos a
pergunta...
Scanner lˆe o
string digitado
(at´e um enter ser
pressionado)
import java.util.Scanner;
class Projeto {
Residencia[] condominio;
...
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Quantas resid^encias h´a no
condom´ınio? ");
String sTotal = entrada.nextLine();
int nRes = Integer.parseInt(sTotal);
Projeto proj = new Projeto(nRes);
for (int i=0; i<nRes; i++) {
Residencia res = new Residencia(
new AreaCasa(),new AreaPiscina());
proj.adicionaRes(res);
}
System.out.println(proj.condominio.length);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 21 / 33
Entrada – Olhando mais de perto
Fazemos a
pergunta...
Scanner lˆe o
string digitado
(at´e um enter ser
pressionado)
Recuperamos o
inteiro nesse
string
import java.util.Scanner;
class Projeto {
Residencia[] condominio;
...
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Quantas resid^encias h´a no
condom´ınio? ");
String sTotal = entrada.nextLine();
int nRes = Integer.parseInt(sTotal);
Projeto proj = new Projeto(nRes);
for (int i=0; i<nRes; i++) {
Residencia res = new Residencia(
new AreaCasa(),new AreaPiscina());
proj.adicionaRes(res);
}
System.out.println(proj.condominio.length);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 21 / 33
Entrada – Olhando mais de perto
Usamos para
inicializar o
objeto da classe
Projeto
import java.util.Scanner;
class Projeto {
Residencia[] condominio;
...
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Quantas resid^encias h´a no
condom´ınio? ");
String sTotal = entrada.nextLine();
int nRes = Integer.parseInt(sTotal);
Projeto proj = new Projeto(nRes);
for (int i=0; i<nRes; i++) {
Residencia res = new Residencia(
new AreaCasa(),new AreaPiscina());
proj.adicionaRes(res);
}
System.out.println(proj.condominio.length);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 22 / 33
Entrada – Olhando mais de perto
Usamos para
inicializar o
objeto da classe
Projeto
Criamos
residˆencias
padr˜ao no
condom´ınio
import java.util.Scanner;
class Projeto {
Residencia[] condominio;
...
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Quantas resid^encias h´a no
condom´ınio? ");
String sTotal = entrada.nextLine();
int nRes = Integer.parseInt(sTotal);
Projeto proj = new Projeto(nRes);
for (int i=0; i<nRes; i++) {
Residencia res = new Residencia(
new AreaCasa(),new AreaPiscina());
proj.adicionaRes(res);
}
System.out.println(proj.condominio.length);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 22 / 33
Entrada – Olhando mais de perto
E se o que for
lido n˜ao for o
esperado?
import java.util.Scanner;
class Projeto {
Residencia[] condominio;
...
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Quantas resid^encias h´a no
condom´ınio? ");
String sTotal = entrada.nextLine();
int nRes = Integer.parseInt(sTotal);
Projeto proj = new Projeto(nRes);
for (int i=0; i<nRes; i++) {
Residencia res = new Residencia(
new AreaCasa(),new AreaPiscina());
proj.adicionaRes(res);
}
System.out.println(proj.condominio.length);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 23 / 33
Entrada – Olhando mais de perto
E se o que for
lido n˜ao for o
esperado?
Um n˜ao inteiro
quando se queria
inteiro, por
exemplo
import java.util.Scanner;
class Projeto {
Residencia[] condominio;
...
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Quantas resid^encias h´a no
condom´ınio? ");
String sTotal = entrada.nextLine();
int nRes = Integer.parseInt(sTotal);
Projeto proj = new Projeto(nRes);
for (int i=0; i<nRes; i++) {
Residencia res = new Residencia(
new AreaCasa(),new AreaPiscina());
proj.adicionaRes(res);
}
System.out.println(proj.condominio.length);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 23 / 33
Entrada – Olhando mais de perto
E se o que for
lido n˜ao for o
esperado?
Um n˜ao inteiro
quando se queria
inteiro, por
exemplo
Um erro em
tempo de
execu¸c˜ao ocorre
import java.util.Scanner;
class Projeto {
Residencia[] condominio;
...
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Quantas resid^encias h´a no
condom´ınio? ");
String sTotal = entrada.nextLine();
int nRes = Integer.parseInt(sTotal);
Projeto proj = new Projeto(nRes);
for (int i=0; i<nRes; i++) {
Residencia res = new Residencia(
new AreaCasa(),new AreaPiscina());
proj.adicionaRes(res);
}
System.out.println(proj.condominio.length);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 23 / 33
Scanner
Scanner pode tamb´em
ser usado para varrer
as informa¸c˜oes em um
string
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 24 / 33
Scanner
Scanner pode tamb´em
ser usado para varrer
as informa¸c˜oes em um
string
import java.util.Scanner;
class Teste {
public static void main(String[] args) {
String meuString = "3 tokens 5,3 true";
Scanner sc = new Scanner (meuString);
int i = sc.nextInt();
String str = sc.next();
double d = sc.nextDouble();
boolean b = sc.nextBoolean();
System.out.println(i);
System.out.println(str);
System.out.println(d);
System.out.println(b);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 24 / 33
Scanner
Scanner pode tamb´em
ser usado para varrer
as informa¸c˜oes em um
string
Linha de Comando
$ java Teste
3
tokens
5.3
true
import java.util.Scanner;
class Teste {
public static void main(String[] args) {
String meuString = "3 tokens 5,3 true";
Scanner sc = new Scanner (meuString);
int i = sc.nextInt();
String str = sc.next();
double d = sc.nextDouble();
boolean b = sc.nextBoolean();
System.out.println(i);
System.out.println(str);
System.out.println(d);
System.out.println(b);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 24 / 33
Scanner
Cuidado com floats e
doubles!
import java.util.Scanner;
class Teste {
public static void main(String[] args) {
String meuString = "3 tokens 5,3 true";
Scanner sc = new Scanner (meuString);
int i = sc.nextInt();
String str = sc.next();
double d = sc.nextDouble();
boolean b = sc.nextBoolean();
System.out.println(i);
System.out.println(str);
System.out.println(d);
System.out.println(b);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 25 / 33
Scanner
Cuidado com floats e
doubles!
Depender˜ao do locale
instalado no computador
import java.util.Scanner;
class Teste {
public static void main(String[] args) {
String meuString = "3 tokens 5,3 true";
Scanner sc = new Scanner (meuString);
int i = sc.nextInt();
String str = sc.next();
double d = sc.nextDouble();
boolean b = sc.nextBoolean();
System.out.println(i);
System.out.println(str);
System.out.println(d);
System.out.println(b);
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 25 / 33
Busca Sequencial
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 26 / 33
Busca em Arranjo
Suponha que temos um arranjo de inteiros
Como fazemos para verificar se um determinado
n´umero est´a l´a?
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 27 / 33
Busca em Arranjo
Suponha que temos um arranjo de inteiros
Como fazemos para verificar se um determinado
n´umero est´a l´a?
Varremos o arranjo, da esquerda para a direita
Se acharmos o n´umero, ent˜ao ele est´a no arranjo
Se chegarmos ao final do arranjo e n˜ao acharmos, ele n˜ao
est´a
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 27 / 33
Busca em Arranjo
Suponha que temos um arranjo de inteiros
Como fazemos para verificar se um determinado
n´umero est´a l´a?
Varremos o arranjo, da esquerda para a direita
Se acharmos o n´umero, ent˜ao ele est´a no arranjo
Se chegarmos ao final do arranjo e n˜ao acharmos, ele n˜ao
est´a
Busca Sequencial!
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 27 / 33
Busca em Arranjo
Ex: Buscando 15
2
0
12
1
20
2
15
3
23
4
8
5
30
6
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 28 / 33
Busca em Arranjo
Ex: Buscando 15
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 28 / 33
Busca em Arranjo
Ex: Buscando 15
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 28 / 33
Busca em Arranjo
Ex: Buscando 15
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 28 / 33
Busca em Arranjo
Ex: Buscando 15
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 28 / 33
Busca em Arranjo
Ex: Buscando 15
2
0
12
1
20
2
15
3
23
4
8
5
30
6
Encontrou! ´Indice 3 (quarta posi¸c˜ao).
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 28 / 33
Busca em Arranjo
E o 16?
2
0
12
1
20
2
15
3
23
4
8
5
30
6
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
Busca em Arranjo
E o 16?
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
Busca em Arranjo
E o 16?
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
Busca em Arranjo
E o 16?
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
Busca em Arranjo
E o 16?
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
Busca em Arranjo
E o 16?
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
Busca em Arranjo
E o 16?
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
Busca em Arranjo
E o 16?
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
Busca em Arranjo
E o 16?
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
N˜ao encontrou! Como sabemos?
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
Busca em Arranjo
E o 16?
2
0
12
1
20
2
15
3
23
4
8
5
30
6
i
N˜ao encontrou! Como sabemos?
i == 7, ou seja, i == tamanho.
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
Busca em Arranjo
Ent˜ao...
static int buscaSeq(int[] arr, int el) {
for (int i=0; i<arr.length; i++)
if (arr[i] == el) return(i);
return(-1);
}
public static void main(String[] args) {
int[] v = {9, 8, 4, 6, 3, 4};
System.out.println(buscaSeq(v, 4));
System.out.println(buscaSeq(v, 12));
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 30 / 33
Busca em Arranjo
Ent˜ao...
Note que fizemos o
m´etodo static
static int buscaSeq(int[] arr, int el) {
for (int i=0; i<arr.length; i++)
if (arr[i] == el) return(i);
return(-1);
}
public static void main(String[] args) {
int[] v = {9, 8, 4, 6, 3, 4};
System.out.println(buscaSeq(v, 4));
System.out.println(buscaSeq(v, 12));
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 30 / 33
Busca em Arranjo
Ent˜ao...
Note que fizemos o
m´etodo static
Ele j´a disp˜oe, em seus
parˆametros, de toda a
informa¸c˜ao de que precisa
para executar
static int buscaSeq(int[] arr, int el) {
for (int i=0; i<arr.length; i++)
if (arr[i] == el) return(i);
return(-1);
}
public static void main(String[] args) {
int[] v = {9, 8, 4, 6, 3, 4};
System.out.println(buscaSeq(v, 4));
System.out.println(buscaSeq(v, 12));
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 30 / 33
Busca em Arranjo
Ent˜ao...
Note que fizemos o
m´etodo static
Ele j´a disp˜oe, em seus
parˆametros, de toda a
informa¸c˜ao de que precisa
para executar
N˜ao precisa de nada mais
espec´ıfico de cada objeto
particular
static int buscaSeq(int[] arr, int el) {
for (int i=0; i<arr.length; i++)
if (arr[i] == el) return(i);
return(-1);
}
public static void main(String[] args) {
int[] v = {9, 8, 4, 6, 3, 4};
System.out.println(buscaSeq(v, 4));
System.out.println(buscaSeq(v, 12));
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 30 / 33
Busca em Arranjo
Ent˜ao...
Note que fizemos o
m´etodo static
Ele j´a disp˜oe, em seus
parˆametros, de toda a
informa¸c˜ao de que precisa
para executar
N˜ao precisa de nada mais
espec´ıfico de cada objeto
particular
Sendo static, n˜ao h´a
uma c´opia por objeto –
poupa mem´oria
static int buscaSeq(int[] arr, int el) {
for (int i=0; i<arr.length; i++)
if (arr[i] == el) return(i);
return(-1);
}
public static void main(String[] args) {
int[] v = {9, 8, 4, 6, 3, 4};
System.out.println(buscaSeq(v, 4));
System.out.println(buscaSeq(v, 12));
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 30 / 33
Busca em Arranjo
Ent˜ao...
Note que fizemos o
m´etodo static
Ele j´a disp˜oe, em seus
parˆametros, de toda a
informa¸c˜ao de que precisa
para executar
N˜ao precisa de nada mais
espec´ıfico de cada objeto
particular
Sendo static, n˜ao h´a
uma c´opia por objeto –
poupa mem´oria
static int buscaSeq(int[] arr, int el) {
for (int i=0; i<arr.length; i++)
if (arr[i] == el) return(i);
return(-1);
}
public static void main(String[] args) {
int[] v = {9, 8, 4, 6, 3, 4};
System.out.println(buscaSeq(v, 4));
System.out.println(buscaSeq(v, 12));
}
Sa´ıda
$ java Projeto
2
-1
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 30 / 33
Busca em Arranjo
Como ficaria a busca com objetos?
Ex: busque, no condom´ınio, a primeira casa com piscina de
raio 3
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 31 / 33
Busca em Arranjo
Como ficaria a busca com objetos?
Ex: busque, no condom´ınio, a primeira casa com piscina de
raio 3
class Projeto {
Residencia[] condominio;
...
Projeto(int tam) {
condominio = new Residencia[tam];
}
int buscaPiscSeq(double raio) {
for (int i=0;i<this.condominio.length;i++)
if (this.condominio[i].piscina.raio ==
raio) return(i);
return(-1);
}
...
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 31 / 33
Busca em Arranjo
Como ficaria a busca com objetos?
Ex: busque, no condom´ınio, a primeira casa com piscina de
raio 3
Note que o m´etodo
agora n˜ao ´e static,
pois efetua a busca
no arranjo de
condom´ınios
do objeto
class Projeto {
Residencia[] condominio;
...
Projeto(int tam) {
condominio = new Residencia[tam];
}
int buscaPiscSeq(double raio) {
for (int i=0;i<this.condominio.length;i++)
if (this.condominio[i].piscina.raio ==
raio) return(i);
return(-1);
}
...
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 31 / 33
Busca em Arranjo
class Projeto {
Residencia[] condominio;
...
Projeto(int tam) {
condominio = new Residencia[tam];
}
int buscaPiscSeq(double raio) {
for (int i=0;
i<this.condominio.length; i++)
if (this.condominio[i].piscina.raio
== raio) return(i);
return(-1);
}
public static void main(String[] args)
{
Projeto pr = new Projeto(5);
for (int i=0; i<pr.condominio.length;
i++) {
AreaCasa c = new AreaCasa();
AreaPiscina p =
new AreaPiscina(i+2);
Residencia r = new Residencia(c,p);
pr.adicionaRes(r);
}
System.out.println(
pr.buscaPiscSeq(3));
System.out.println(
pr.buscaPiscSeq(15));
}
}
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 32 / 33
Busca em Arranjo
class Projeto {
Residencia[] condominio;
...
Projeto(int tam) {
condominio = new Residencia[tam];
}
int buscaPiscSeq(double raio) {
for (int i=0;
i<this.condominio.length; i++)
if (this.condominio[i].piscina.raio
== raio) return(i);
return(-1);
}
public static void main(String[] args)
{
Projeto pr = new Projeto(5);
for (int i=0; i<pr.condominio.length;
i++) {
AreaCasa c = new AreaCasa();
AreaPiscina p =
new AreaPiscina(i+2);
Residencia r = new Residencia(c,p);
pr.adicionaRes(r);
}
System.out.println(
pr.buscaPiscSeq(3));
System.out.println(
pr.buscaPiscSeq(15));
}
}
Sa´ıda:
$ java Projeto
1
-1
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 32 / 33
Videoaula
https://www.youtube.com/watch?v=NUKflTnntcw
https://www.youtube.com/watch?v=dHou1G8iYo4
(para o Scanner)
https://www.youtube.com/watch?v=8weGr_G3Pqo
e
https://www.youtube.com/watch?v=4WYyd7MNDqQ
Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 33 / 33

Mais conteúdo relacionado

Mais de Norton Trevisan Roman

(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 03
(ACH2044) Inteligência Artificial - Aula 03(ACH2044) Inteligência Artificial - Aula 03
(ACH2044) Inteligência Artificial - Aula 03Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 02
(ACH2044) Inteligência Artificial - Aula 02(ACH2044) Inteligência Artificial - Aula 02
(ACH2044) Inteligência Artificial - Aula 02Norton Trevisan Roman
 

Mais de Norton Trevisan Roman (20)

(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
 
(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04
 
(ACH2044) Inteligência Artificial - Aula 03
(ACH2044) Inteligência Artificial - Aula 03(ACH2044) Inteligência Artificial - Aula 03
(ACH2044) Inteligência Artificial - Aula 03
 
(ACH2044) Inteligência Artificial - Aula 02
(ACH2044) Inteligência Artificial - Aula 02(ACH2044) Inteligência Artificial - Aula 02
(ACH2044) Inteligência Artificial - Aula 02
 

Último

GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docPauloHenriqueGarciaM
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Cabiamar
 
Slides 9º ano 2024.pptx- Geografia - exercicios
Slides 9º ano 2024.pptx- Geografia - exerciciosSlides 9º ano 2024.pptx- Geografia - exercicios
Slides 9º ano 2024.pptx- Geografia - exerciciosGentil Eronides
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)Centro Jacques Delors
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º anoRachel Facundo
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Centro Jacques Delors
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa paraAndreaPassosMascaren
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...marcelafinkler
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Centro Jacques Delors
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptxMarlene Cunhada
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...azulassessoria9
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*Viviane Moreiras
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubeladrianaguedesbatista
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...andreiavys
 

Último (20)

GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
Slides 9º ano 2024.pptx- Geografia - exercicios
Slides 9º ano 2024.pptx- Geografia - exerciciosSlides 9º ano 2024.pptx- Geografia - exercicios
Slides 9º ano 2024.pptx- Geografia - exercicios
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa para
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Novena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João EudesNovena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João Eudes
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 

(ACH2001) Introdução à Programação - Aula 16

  • 1. Aula 16 – Strings, Entrada e Busca Sequencial Norton Trevisan Roman 2 de maio de 2020 Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 1 / 33
  • 2. Revendo Strings At´e agora, como hav´ıamos definido strings? Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 2 / 33
  • 3. Revendo Strings At´e agora, como hav´ıamos definido strings? Arranjos de caracteres public static void main(String[] args) { char[] str = {’o’,’b’,’a’}; char[] str2 = new char[2]; str2[0] = ’e’; str2[1] = ’i’; } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 2 / 33
  • 4. Revendo Strings At´e agora, como hav´ıamos definido strings? Arranjos de caracteres Embora funcione, seu uso ´e bastante limitado em Java public static void main(String[] args) { char[] str = {’o’,’b’,’a’}; char[] str2 = new char[2]; str2[0] = ’e’; str2[1] = ’i’; } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 2 / 33
  • 5. Revendo Strings At´e agora, como hav´ıamos definido strings? Arranjos de caracteres Embora funcione, seu uso ´e bastante limitado em Java Felizmente, h´a uma classe Java definida apenas para o uso de strings: public static void main(String[] args) { char[] str = {’o’,’b’,’a’}; char[] str2 = new char[2]; str2[0] = ’e’; str2[1] = ’i’; } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 2 / 33
  • 6. Revendo Strings At´e agora, como hav´ıamos definido strings? Arranjos de caracteres Embora funcione, seu uso ´e bastante limitado em Java Felizmente, h´a uma classe Java definida apenas para o uso de strings: public static void main(String[] args) { char[] str = {’o’,’b’,’a’}; char[] str2 = new char[2]; str2[0] = ’e’; str2[1] = ’i’; } public static void main(String[] args) { String s = "Meu string"; System.out.println(s); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 2 / 33
  • 7. Revendo Strings Podemos ent˜ao reescrever os nomes dos materiais da piscina Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 3 / 33
  • 8. Revendo Strings Podemos ent˜ao reescrever os nomes dos materiais da piscina De... static char[][] nomes = {{’A’,’l’,’v’, ’e’,’n’,’a’,’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’,’c’,’o’}}; Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 3 / 33
  • 9. Revendo Strings Podemos ent˜ao reescrever os nomes dos materiais da piscina De... Para... static char[][] nomes = {{’A’,’l’,’v’, ’e’,’n’,’a’,’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’,’c’,’o’}}; static String[] nomes = {"Alvenaria", "Vinil", "Fibra", "Pl´astico"}; Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 3 / 33
  • 10. Strings Como fazemos para acessarmos o caractere em uma determinada posi¸c˜ao no string? Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 4 / 33
  • 11. Strings Como fazemos para acessarmos o caractere em uma determinada posi¸c˜ao no string? public static void main(String[] args) { String s = "Meu string"; System.out.println(s[4]); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 4 / 33
  • 12. Strings Como fazemos para acessarmos o caractere em uma determinada posi¸c˜ao no string? public static void main(String[] args) { String s = "Meu string"; System.out.println(s[4]); } AreaPiscina.java:102: array required, but java.lang.String found System.out.println(s[4]); ^ 1 error Strings n˜ao s˜ao arranjos! Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 4 / 33
  • 13. Strings Como fazemos para acessarmos o caractere em uma determinada posi¸c˜ao no string? public static void main(String[] args) { String s = "Meu string"; System.out.println(s.charAt(4)); } AreaPiscina.java:102: array required, but java.lang.String found System.out.println(s[4]); ^ 1 error Strings n˜ao s˜ao arranjos! Deve-se usar o m´etodo charAt() Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 4 / 33
  • 14. Strings E como podemos modificar um caractere no String? Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 5 / 33
  • 15. Strings E como podemos modificar um caractere no String? N˜ao podemos. Objetos String s˜ao constantes Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 5 / 33
  • 16. Strings E como podemos modificar um caractere no String? N˜ao podemos. Objetos String s˜ao constantes N˜ao podem ser mudados ap´os terem sido criados Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 5 / 33
  • 17. Strings E como podemos modificar um caractere no String? N˜ao podemos. Objetos String s˜ao constantes N˜ao podem ser mudados ap´os terem sido criados public static void main(String[] args) { String s = "Meu string"; char[] s2 = s.toCharArray(); s2[4] = ’b’; s = String.valueOf(s2); //ou s = new String(s2); System.out.println(s); } Solu¸c˜ao: transformar em arranjo... Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 5 / 33
  • 18. Strings E como podemos modificar um caractere no String? N˜ao podemos. Objetos String s˜ao constantes N˜ao podem ser mudados ap´os terem sido criados public static void main(String[] args) { String s = "Meu string"; char[] s2 = s.toCharArray(); s2[4] = ’b’; s = String.valueOf(s2); //ou s = new String(s2); System.out.println(s); } Solu¸c˜ao: transformar em arranjo... Sempre criar´a um novo objeto Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 5 / 33
  • 19. Olhando mais de perto... O que houve com ‘‘Meu string’’? public static void main(String[] args) { String s = "Meu string"; char[] s2 = s.toCharArray(); s2[4] = ’b’; s = String.valueOf(s2); //ou s = new String(s2); System.out.println(s); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
  • 20. Olhando mais de perto... O que houve com ‘‘Meu string’’? Vejamos o comportamento da mem´oria: public static void main(String[] args) { String s = "Meu string"; char[] s2 = s.toCharArray(); s2[4] = ’b’; s = String.valueOf(s2); //ou s = new String(s2); System.out.println(s); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
  • 21. Olhando mais de perto... O que houve com ‘‘Meu string’’? Vejamos o comportamento da mem´oria: public static void main(String[] args) { String s = "Meu string"; char[] s2 = s.toCharArray(); s2[4] = ’b’; s = String.valueOf(s2); //ou s = new String(s2); System.out.println(s); } Classe ??? main args 0x23f Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
  • 22. Olhando mais de perto... O que houve com ‘‘Meu string’’? Vejamos o comportamento da mem´oria: public static void main(String[] args) { String s = "Meu string"; char[] s2 = s.toCharArray(); s2[4] = ’b’; s = String.valueOf(s2); //ou s = new String(s2); System.out.println(s); } Classe ??? main args 0x23f s 0xfdf 0xdaf (0xdaf) ??? 0xa23 “Meu string” Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
  • 23. Olhando mais de perto... O que houve com ‘‘Meu string’’? Vejamos o comportamento da mem´oria: public static void main(String[] args) { String s = "Meu string"; char[] s2 = s.toCharArray(); s2[4] = ’b’; s = String.valueOf(s2); //ou s = new String(s2); System.out.println(s); } Classe ??? main args 0x23f s 0xfdf 0xdaf (0xdaf) ??? 0xa23 “Meu string” toCharArray ??? s2 0x98a 0x158 0x158 M e u s t r . . . Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
  • 24. Olhando mais de perto... O que houve com ‘‘Meu string’’? Vejamos o comportamento da mem´oria: public static void main(String[] args) { String s = "Meu string"; char[] s2 = s.toCharArray(); s2[4] = ’b’; s = String.valueOf(s2); //ou s = new String(s2); System.out.println(s); } Classe ??? main args 0x23f s 0xfdf 0xdaf (0xdaf) ??? 0xa23 “Meu string” s2 0x98a 0x158 0x158 M e u b t r . . . Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
  • 25. Olhando mais de perto... O que houve com ‘‘Meu string’’? Vejamos o comportamento da mem´oria: public static void main(String[] args) { String s = "Meu string"; char[] s2 = s.toCharArray(); s2[4] = ’b’; s = String.valueOf(s2); //ou s = new String(s2); System.out.println(s); } Classe ??? main args 0x23f s 0xfdf 0xd23 (0xdaf) ??? 0xa23 “Meu string” s2 0x98a 0x158 0x158 M e u b t r . . . (0xd23) ??? 0xab3 “Meu dtring” String ValueOf ??? 0x236 0x158 Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
  • 26. Olhando mais de perto... O que houve com ‘‘Meu string’’? Vejamos o comportamento da mem´oria: O primeiro objeto String teve sua referˆencia perdida public static void main(String[] args) { String s = "Meu string"; char[] s2 = s.toCharArray(); s2[4] = ’b’; s = String.valueOf(s2); //ou s = new String(s2); System.out.println(s); } Classe ??? main args 0x23f s 0xfdf 0xd23 (0xdaf) ??? 0xa23 “Meu string” s2 0x98a 0x158 0x158 M e u b t r . . . (0xd23) ??? 0xab3 “Meu dtring” String ValueOf ??? 0x236 0x158 Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
  • 27. Olhando mais de perto... O que houve com ‘‘Meu string’’? Vejamos o comportamento da mem´oria: O primeiro objeto String teve sua referˆencia perdida Ser´a desalocado pelo garbage collector public static void main(String[] args) { String s = "Meu string"; char[] s2 = s.toCharArray(); s2[4] = ’b’; s = String.valueOf(s2); //ou s = new String(s2); System.out.println(s); } Classe ??? main args 0x23f s 0xfdf 0xd23 (0xdaf) ??? 0xa23 “Meu string” s2 0x98a 0x158 0x158 M e u b t r . . . (0xd23) ??? 0xab3 “Meu dtring” String ValueOf ??? 0x236 0x158 Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 6 / 33
  • 28. Strings O que acontece se fizermos str1 == str2? Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 7 / 33
  • 29. Strings O que acontece se fizermos str1 == str2? Ser˜ao comparadas as referˆencias (endere¸cos) Ser´a true somente se ambos str1 e str2 contiverem o mesmo endere¸co na mem´oria Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 7 / 33
  • 30. Strings O que acontece se fizermos str1 == str2? Ser˜ao comparadas as referˆencias (endere¸cos) Ser´a true somente se ambos str1 e str2 contiverem o mesmo endere¸co na mem´oria String str1 = "Exemplo"; String str2 = new String("Exemplo"); String str3 = "Outro exemplo"; if (str1 == str2) ... if (str1 == str3) ... str3 = str1; if (str1 == str3) ... Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 7 / 33
  • 31. Strings O que acontece se fizermos str1 == str2? Ser˜ao comparadas as referˆencias (endere¸cos) Ser´a true somente se ambos str1 e str2 contiverem o mesmo endere¸co na mem´oria String str1 = "Exemplo"; String str2 = new String("Exemplo"); String str3 = "Outro exemplo"; if (str1 == str2) ... // false (objetos diferentes) if (str1 == str3) ... str3 = str1; if (str1 == str3) ... Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 7 / 33
  • 32. Strings O que acontece se fizermos str1 == str2? Ser˜ao comparadas as referˆencias (endere¸cos) Ser´a true somente se ambos str1 e str2 contiverem o mesmo endere¸co na mem´oria String str1 = "Exemplo"; String str2 = new String("Exemplo"); String str3 = "Outro exemplo"; if (str1 == str2) ... // false (objetos diferentes) if (str1 == str3) ... // false (objetos diferentes) str3 = str1; if (str1 == str3) ... Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 7 / 33
  • 33. Strings O que acontece se fizermos str1 == str2? Ser˜ao comparadas as referˆencias (endere¸cos) Ser´a true somente se ambos str1 e str2 contiverem o mesmo endere¸co na mem´oria String str1 = "Exemplo"; String str2 = new String("Exemplo"); String str3 = "Outro exemplo"; if (str1 == str2) ... // false (objetos diferentes) if (str1 == str3) ... // false (objetos diferentes) str3 = str1; if (str1 == str3) ... // true (mesmo objeto) Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 7 / 33
  • 34. Strings E se fizermos... public static void main( String[] args) { String s = "Meu string"; s = s + "oba"; s = s + ’c’; s = s + 4; s = s + 23.5; } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
  • 35. Strings E se fizermos... s = “Meu string” public static void main( String[] args) { String s = "Meu string"; s = s + "oba"; s = s + ’c’; s = s + 4; s = s + 23.5; } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
  • 36. Strings E se fizermos... s = “Meu string” s = “Meu stringoba” public static void main( String[] args) { String s = "Meu string"; s = s + "oba"; s = s + ’c’; s = s + 4; s = s + 23.5; } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
  • 37. Strings E se fizermos... s = “Meu string” s = “Meu stringoba” s = “Meu stringobac” public static void main( String[] args) { String s = "Meu string"; s = s + "oba"; s = s + ’c’; s = s + 4; s = s + 23.5; } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
  • 38. Strings E se fizermos... s = “Meu string” s = “Meu stringoba” s = “Meu stringobac” s = “Meu stringobac4” public static void main( String[] args) { String s = "Meu string"; s = s + "oba"; s = s + ’c’; s = s + 4; s = s + 23.5; } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
  • 39. Strings E se fizermos... s = “Meu string” s = “Meu stringoba” s = “Meu stringobac” s = “Meu stringobac4” public static void main( String[] args) { String s = "Meu string"; s = s + "oba"; s = s + ’c’; s = s + 4; s = s + 23.5; } s = “Meu stringobac423.5” Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
  • 40. Strings E se fizermos... s = “Meu string” s = “Meu stringoba” s = “Meu stringobac” s = “Meu stringobac4” public static void main( String[] args) { String s = "Meu string"; s = s + "oba"; s = s + ’c’; s = s + 4; s = s + 23.5; } s = “Meu stringobac423.5” Como strings s˜ao imut´aveis, a cada mudan¸ca criamos nova c´opia na mem´oria Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
  • 41. Strings E se fizermos... s = “Meu string” s = “Meu stringoba” s = “Meu stringobac” s = “Meu stringobac4” public static void main( String[] args) { String s = "Meu string"; s = s + "oba"; s = s + ’c’; s = s + 4; s = s + 23.5; } s = “Meu stringobac423.5” Como strings s˜ao imut´aveis, a cada mudan¸ca criamos nova c´opia na mem´oria Sobrescrevendo o endere¸co que havia em s Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
  • 42. Strings E se fizermos... s = “Meu string” s = “Meu stringoba” s = “Meu stringobac” s = “Meu stringobac4” public static void main( String[] args) { String s = "Meu string"; s = s + "oba"; s = s + ’c’; s = s + 4; s = s + 23.5; } s = “Meu stringobac423.5” Como strings s˜ao imut´aveis, a cada mudan¸ca criamos nova c´opia na mem´oria Sobrescrevendo o endere¸co que havia em s E perdendo assim a referˆencia `a c´opia antiga Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 8 / 33
  • 43. Strings Como fazer para comparar dois strings? Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 9 / 33
  • 44. Strings Como fazer para comparar dois strings? m´etodo equals public static void main(String[] args) { String s = "Meu string"; String s2 = "Meu string"; System.out.println( s.equals(s2)); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 9 / 33
  • 45. Strings Como fazer para comparar dois strings? m´etodo equals E para saber o tamanho de um string? public static void main(String[] args) { String s = "Meu string"; String s2 = "Meu string"; System.out.println( s.equals(s2)); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 9 / 33
  • 46. Strings Como fazer para comparar dois strings? m´etodo equals E para saber o tamanho de um string? m´etodo length public static void main(String[] args) { String s = "Meu string"; String s2 = "Meu string"; System.out.println( s.equals(s2)); System.out.println(s.length()); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 9 / 33
  • 47. Strings Como fazer para comparar dois strings? m´etodo equals E para saber o tamanho de um string? m´etodo length public static void main(String[] args) { String s = "Meu string"; String s2 = "Meu string"; System.out.println( s.equals(s2)); System.out.println(s.length()); } http://docs.oracle.com/javase/7/docs/api/ java/lang/String.html Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 9 / 33
  • 48. Strings O que ser´a impresso? public static void main(String[] args) { String s1 = "Bom dia"; String s2 = s1; s1 = "Boa noite"; System.out.println(s2); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 10 / 33
  • 49. Strings O que ser´a impresso? public static void main(String[] args) { String s1 = "Bom dia"; String s2 = s1; s1 = "Boa noite"; System.out.println(s2); } Classe ??? main args 0x23f Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 10 / 33
  • 50. Strings O que ser´a impresso? public static void main(String[] args) { String s1 = "Bom dia"; String s2 = s1; s1 = "Boa noite"; System.out.println(s2); } Classe ??? main args 0x23f s1 0xfdf 0xdaf (0xdaf) ??? 0xa23 “Bom dia” Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 10 / 33
  • 51. Strings O que ser´a impresso? public static void main(String[] args) { String s1 = "Bom dia"; String s2 = s1; s1 = "Boa noite"; System.out.println(s2); } Classe ??? main args 0x23f s1 0xfdf 0xdaf (0xdaf) ??? 0xa23 “Bom dia” s2 0x98a 0xdaf Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 10 / 33
  • 52. Strings O que ser´a impresso? public static void main(String[] args) { String s1 = "Bom dia"; String s2 = s1; s1 = "Boa noite"; System.out.println(s2); } Classe ??? main args 0x23f s1 0xfdf 0x22f (0xdaf) ??? 0xa23 “Bom dia” s2 0x98a 0xdaf (0x22f) ??? 0x526 “Boa noite” Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 10 / 33
  • 53. Strings O que ser´a impresso? “Bom dia” public static void main(String[] args) { String s1 = "Bom dia"; String s2 = s1; s1 = "Boa noite"; System.out.println(s2); } Classe ??? main args 0x23f s1 0xfdf 0x22f (0xdaf) ??? 0xa23 “Bom dia” s2 0x98a 0xdaf (0x22f) ??? 0x526 “Boa noite” Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 10 / 33
  • 54. Strings E qual a sa´ıda desse c´odigo? class Teste { void misterio(String y) { y = "Novo string"; } public static void main(String[] args) { String x = "String antigo"; Teste a = new Teste(); a.misterio(x); System.out.println(x); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
  • 55. Strings E qual a sa´ıda desse c´odigo? class Teste { void misterio(String y) { y = "Novo string"; } public static void main(String[] args) { String x = "String antigo"; Teste a = new Teste(); a.misterio(x); System.out.println(x); } } Teste main args 0x23f Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
  • 56. Strings E qual a sa´ıda desse c´odigo? class Teste { void misterio(String y) { y = "Novo string"; } public static void main(String[] args) { String x = "String antigo"; Teste a = new Teste(); a.misterio(x); System.out.println(x); } } Teste main args 0x23f x 0xfdf 0xdaf (0xdaf) ??? 0xa23 “String antigo” Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
  • 57. Strings E qual a sa´ıda desse c´odigo? class Teste { void misterio(String y) { y = "Novo string"; } public static void main(String[] args) { String x = "String antigo"; Teste a = new Teste(); a.misterio(x); System.out.println(x); } } Teste main args 0x23f x 0xfdf 0xdaf (0xdaf) ??? 0xa23 “String antigo” a 0x00f 0x22f (0x22f) Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
  • 58. Strings E qual a sa´ıda desse c´odigo? class Teste { void misterio(String y) { y = "Novo string"; } public static void main(String[] args) { String x = "String antigo"; Teste a = new Teste(); a.misterio(x); System.out.println(x); } } Teste main args 0x23f x 0xfdf 0xdaf (0xdaf) ??? 0xa23 “String antigo” a 0x00f 0x22f (0x22f) misterio y 0x652 0xdaf Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
  • 59. Strings E qual a sa´ıda desse c´odigo? class Teste { void misterio(String y) { y = "Novo string"; } public static void main(String[] args) { String x = "String antigo"; Teste a = new Teste(); a.misterio(x); System.out.println(x); } } Teste main args 0x23f x 0xfdf 0xdaf (0xdaf) ??? 0xa23 “String antigo” a 0x00f 0x22f (0x22f) misterio y 0x652 0xd22 (0xd22) ??? 0xaab “Novo string” Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
  • 60. Strings E qual a sa´ıda desse c´odigo? “String antigo” class Teste { void misterio(String y) { y = "Novo string"; } public static void main(String[] args) { String x = "String antigo"; Teste a = new Teste(); a.misterio(x); System.out.println(x); } } Teste main args 0x23f x 0xfdf 0xdaf (0xdaf) ??? 0xa23 “String antigo” a 0x00f 0x22f (0x22f) misterio y 0x652 0xd22 (0xd22) ??? 0xaab “Novo string” Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
  • 61. Strings E qual a sa´ıda desse c´odigo? “String antigo” Modificamos o parˆametro, e n˜ao a vari´avel do objeto class Teste { void misterio(String y) { y = "Novo string"; } public static void main(String[] args) { String x = "String antigo"; Teste a = new Teste(); a.misterio(x); System.out.println(x); } } Teste main args 0x23f x 0xfdf 0xdaf (0xdaf) ??? 0xa23 “String antigo” a 0x00f 0x22f (0x22f) misterio y 0x652 0xd22 (0xd22) ??? 0xaab “Novo string” Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 11 / 33
  • 62. Parˆametros da Linha de Comando Considere o m´etodo main public static void main(String[] args) { } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 12 / 33
  • 63. Parˆametros da Linha de Comando Considere o m´etodo main O que s˜ao esses args? public static void main(String[] args) { } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 12 / 33
  • 64. Parˆametros da Linha de Comando Considere o m´etodo main O que s˜ao esses args? S˜ao um arranjo de Strings public static void main(String[] args) { } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 12 / 33
  • 65. Parˆametros da Linha de Comando Considere o m´etodo main O que s˜ao esses args? S˜ao um arranjo de Strings public static void main(String[] args) { for (String arg : args) System.out.println(arg); } E o que o c´odigo no for faz? Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 12 / 33
  • 66. Parˆametros da Linha de Comando Vamos ver... Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
  • 67. Parˆametros da Linha de Comando Vamos ver... $java AreaPiscina Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
  • 68. Parˆametros da Linha de Comando Vamos ver... $java AreaPiscina $ java AreaPiscina oba oba Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
  • 69. Parˆametros da Linha de Comando Vamos ver... $java AreaPiscina $ java AreaPiscina oba oba $ java AreaPiscina oba 23 oba 23 Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
  • 70. Parˆametros da Linha de Comando Vamos ver... $java AreaPiscina $ java AreaPiscina oba oba $ java AreaPiscina oba 23 oba 23 $ java AreaPiscina oba 23 eba oba 23 eba Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
  • 71. Parˆametros da Linha de Comando Vamos ver... Escreve os argumentos passados na linha de comando $java AreaPiscina $ java AreaPiscina oba oba $ java AreaPiscina oba 23 oba 23 $ java AreaPiscina oba 23 eba oba 23 eba Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
  • 72. Parˆametros da Linha de Comando Vamos ver... Escreve os argumentos passados na linha de comando Informa¸c˜oes adicionais separadas por espa¸co $java AreaPiscina $ java AreaPiscina oba oba $ java AreaPiscina oba 23 oba 23 $ java AreaPiscina oba 23 eba oba 23 eba Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
  • 73. Parˆametros da Linha de Comando Vamos ver... Escreve os argumentos passados na linha de comando Informa¸c˜oes adicionais separadas por espa¸co Usadas para passar alguma informa¸c˜ao inicial ao programa $java AreaPiscina $ java AreaPiscina oba oba $ java AreaPiscina oba 23 oba 23 $ java AreaPiscina oba 23 eba oba 23 eba Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
  • 74. Parˆametros da Linha de Comando Vamos ver... Escreve os argumentos passados na linha de comando Informa¸c˜oes adicionais separadas por espa¸co Usadas para passar alguma informa¸c˜ao inicial ao programa $java AreaPiscina $ java AreaPiscina oba oba $ java AreaPiscina oba 23 oba 23 $ java AreaPiscina oba 23 eba oba 23 eba Ent˜ao args nos d´a um arranjo com cada argumento passado ao programa, na ordem em que ´e passado Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 13 / 33
  • 75. Parˆametros da Linha de Comando Poder´ıamos, por exemplo, usar a linha de comando para definir o material de uma piscina Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 14 / 33
  • 76. Parˆametros da Linha de Comando Poder´ıamos, por exemplo, usar a linha de comando para definir o material de uma piscina class AreaPiscina { ... static int tipoMat(String nome) { for (int i=0; i<nomes.length; i++) { if (nomes[i].equals(nome)) return(i); } return(-1); } public static void main(String[] args) { if (args.length != 1) System.out.println( "N´umero de par^ametros inv´alido"); else { AreaPiscina p = new AreaPiscina(); int material = AreaPiscina.tipoMat(args[0]); if (material != -1) System.out.println(p.valor(p.area(), material)); else System.out.println("Material inv´alido"); } } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 14 / 33
  • 77. Parˆametros da Linha de Comando Linha de Comando $ java AreaPiscina N´umero de par^ametros inv´alido $ java AreaPiscina Pl´astic Material inv´alido $ java AreaPiscina Pl´astico 157079.63267948967 $ java AreaPiscina Alvenaria 471238.89803846896 class AreaPiscina { ... static int tipoMat(String nome) { for (int i=0; i<nomes.length; i++) { if (nomes[i].equals(nome)) return(i); } return(-1); } public static void main(String[] args) { if (args.length != 1) System.out.println( "N´umero de par^ametros inv´alido"); else { AreaPiscina p = new AreaPiscina(); int material = AreaPiscina.tipoMat(args[0]); if (material != -1) System.out.println(p.valor(p.area(), material)); else System.out.println("Material inv´alido"); } } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 15 / 33
  • 78. Parˆametros da Linha de Comando Ou poder´ıamos us´a-la para definir o material e o raio de uma piscina Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 16 / 33
  • 79. Parˆametros da Linha de Comando Ou poder´ıamos us´a-la para definir o material e o raio de uma piscina class AreaPiscina { ... public static void main(String[] args){ if (args.length != 2) System.out. println("N´umero de par^ametros inv´alido"); else { int material = AreaPiscina.tipoMat(args[0]); AreaPiscina p = new AreaPiscina( Double.parseDouble(args[1])); if (material != -1) System.out.println(p.valor( p.area(),material)); else System.out.println("Material inv´alido"); } } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 16 / 33
  • 80. Parˆametros da Linha de Comando Ou poder´ıamos us´a-la para definir o material e o raio de uma piscina Como a linha de comando tem s´o strings, temos que converter class AreaPiscina { ... public static void main(String[] args){ if (args.length != 2) System.out. println("N´umero de par^ametros inv´alido"); else { int material = AreaPiscina.tipoMat(args[0]); AreaPiscina p = new AreaPiscina( Double.parseDouble(args[1])); if (material != -1) System.out.println(p.valor( p.area(),material)); else System.out.println("Material inv´alido"); } } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 16 / 33
  • 81. Parˆametros da Linha de Comando Ou poder´ıamos us´a-la para definir o material e o raio de uma piscina Como a linha de comando tem s´o strings, temos que converter Para isso usamos m´etodos da classe Double class AreaPiscina { ... public static void main(String[] args){ if (args.length != 2) System.out. println("N´umero de par^ametros inv´alido"); else { int material = AreaPiscina.tipoMat(args[0]); AreaPiscina p = new AreaPiscina( Double.parseDouble(args[1])); if (material != -1) System.out.println(p.valor( p.area(),material)); else System.out.println("Material inv´alido"); } } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 16 / 33
  • 82. Parˆametros da Linha de Comando Ou poder´ıamos us´a-la para definir o material e o raio de uma piscina Como a linha de comando tem s´o strings, temos que converter Para isso usamos m´etodos da classe Double Linha de Comando $ java AreaPiscina Alvenaria 10 471238.89803846896 $ java AreaPiscina Alvenaria 20 1884955.5921538759 class AreaPiscina { ... public static void main(String[] args){ if (args.length != 2) System.out. println("N´umero de par^ametros inv´alido"); else { int material = AreaPiscina.tipoMat(args[0]); AreaPiscina p = new AreaPiscina( Double.parseDouble(args[1])); if (material != -1) System.out.println(p.valor( p.area(),material)); else System.out.println("Material inv´alido"); } } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 16 / 33
  • 83. Parˆametros da Linha de Comando Todo tipo primitivo tem sua classe equivalente Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 17 / 33
  • 84. Parˆametros da Linha de Comando Todo tipo primitivo tem sua classe equivalente Todas, `a exce¸c˜ao de Character, com o m´etodo parseTipo(String s) Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 17 / 33
  • 85. Parˆametros da Linha de Comando Todo tipo primitivo tem sua classe equivalente Todas, `a exce¸c˜ao de Character, com o m´etodo parseTipo(String s) Primitivo Classe parse int Integer parseInt(String s) long Long parseLong(String s) float Float parseFloat(String s) double Double parseDouble(String s) boolean Boolean parseBoolean(String s) char Character – Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 17 / 33
  • 86. Parˆametros da Linha de Comando Todo tipo primitivo tem sua classe equivalente Todas, `a exce¸c˜ao de Character, com o m´etodo parseTipo(String s) Primitivo Classe parse int Integer parseInt(String s) long Long parseLong(String s) float Float parseFloat(String s) double Double parseDouble(String s) boolean Boolean parseBoolean(String s) char Character – http://download.oracle.com/javase/6/docs/api/ overview-summary.html Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 17 / 33
  • 87. Entrada Entrada via linha de comando, embora interessante, ´e limitada Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 18 / 33
  • 88. Entrada Entrada via linha de comando, embora interessante, ´e limitada Reduz as possibilidades de intera¸c˜ao com o usu´ario Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 18 / 33
  • 89. Entrada O ideal seria trocar mensagens Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 19 / 33
  • 90. Entrada O ideal seria trocar mensagens Escrevendo coisas na tela (println()) Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 19 / 33
  • 91. Entrada O ideal seria trocar mensagens Escrevendo coisas na tela (println()) Lendo coisas do teclado Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 19 / 33
  • 92. Entrada O ideal seria trocar mensagens Escrevendo coisas na tela (println()) Lendo coisas do teclado Como? Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 19 / 33
  • 93. Entrada O ideal seria trocar mensagens Escrevendo coisas na tela (println()) Lendo coisas do teclado Como? Via Scanner (Java ≥ 5) import java.util.Scanner; class Projeto { Residencia[] condominio; ... public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.print("Quantas resid^encias h´a no condom´ınio? "); String sTotal = entrada.nextLine(); int nRes = Integer.parseInt(sTotal); Projeto proj = new Projeto(nRes); for (int i=0; i<nRes; i++) { Residencia res = new Residencia( new AreaCasa(),new AreaPiscina()); proj.adicionaRes(res); } System.out.println(proj.condominio.length); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 19 / 33
  • 94. Entrada – Olhando mais de perto Primeiro temos que dizer ao compilador onde Scanner est´a import java.util.Scanner; class Projeto { Residencia[] condominio; ... public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.print("Quantas resid^encias h´a no condom´ınio? "); String sTotal = entrada.nextLine(); int nRes = Integer.parseInt(sTotal); Projeto proj = new Projeto(nRes); for (int i=0; i<nRes; i++) { Residencia res = new Residencia( new AreaCasa(),new AreaPiscina()); proj.adicionaRes(res); } System.out.println(proj.condominio.length); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 20 / 33
  • 95. Entrada – Olhando mais de perto Primeiro temos que dizer ao compilador onde Scanner est´a Criamos ent˜ao o objeto Scanner, que deve ler da entrada padr˜ao de nosso programa (teclado) import java.util.Scanner; class Projeto { Residencia[] condominio; ... public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.print("Quantas resid^encias h´a no condom´ınio? "); String sTotal = entrada.nextLine(); int nRes = Integer.parseInt(sTotal); Projeto proj = new Projeto(nRes); for (int i=0; i<nRes; i++) { Residencia res = new Residencia( new AreaCasa(),new AreaPiscina()); proj.adicionaRes(res); } System.out.println(proj.condominio.length); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 20 / 33
  • 96. Entrada – Olhando mais de perto Fazemos a pergunta... import java.util.Scanner; class Projeto { Residencia[] condominio; ... public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.print("Quantas resid^encias h´a no condom´ınio? "); String sTotal = entrada.nextLine(); int nRes = Integer.parseInt(sTotal); Projeto proj = new Projeto(nRes); for (int i=0; i<nRes; i++) { Residencia res = new Residencia( new AreaCasa(),new AreaPiscina()); proj.adicionaRes(res); } System.out.println(proj.condominio.length); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 21 / 33
  • 97. Entrada – Olhando mais de perto Fazemos a pergunta... Scanner lˆe o string digitado (at´e um enter ser pressionado) import java.util.Scanner; class Projeto { Residencia[] condominio; ... public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.print("Quantas resid^encias h´a no condom´ınio? "); String sTotal = entrada.nextLine(); int nRes = Integer.parseInt(sTotal); Projeto proj = new Projeto(nRes); for (int i=0; i<nRes; i++) { Residencia res = new Residencia( new AreaCasa(),new AreaPiscina()); proj.adicionaRes(res); } System.out.println(proj.condominio.length); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 21 / 33
  • 98. Entrada – Olhando mais de perto Fazemos a pergunta... Scanner lˆe o string digitado (at´e um enter ser pressionado) Recuperamos o inteiro nesse string import java.util.Scanner; class Projeto { Residencia[] condominio; ... public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.print("Quantas resid^encias h´a no condom´ınio? "); String sTotal = entrada.nextLine(); int nRes = Integer.parseInt(sTotal); Projeto proj = new Projeto(nRes); for (int i=0; i<nRes; i++) { Residencia res = new Residencia( new AreaCasa(),new AreaPiscina()); proj.adicionaRes(res); } System.out.println(proj.condominio.length); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 21 / 33
  • 99. Entrada – Olhando mais de perto Usamos para inicializar o objeto da classe Projeto import java.util.Scanner; class Projeto { Residencia[] condominio; ... public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.print("Quantas resid^encias h´a no condom´ınio? "); String sTotal = entrada.nextLine(); int nRes = Integer.parseInt(sTotal); Projeto proj = new Projeto(nRes); for (int i=0; i<nRes; i++) { Residencia res = new Residencia( new AreaCasa(),new AreaPiscina()); proj.adicionaRes(res); } System.out.println(proj.condominio.length); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 22 / 33
  • 100. Entrada – Olhando mais de perto Usamos para inicializar o objeto da classe Projeto Criamos residˆencias padr˜ao no condom´ınio import java.util.Scanner; class Projeto { Residencia[] condominio; ... public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.print("Quantas resid^encias h´a no condom´ınio? "); String sTotal = entrada.nextLine(); int nRes = Integer.parseInt(sTotal); Projeto proj = new Projeto(nRes); for (int i=0; i<nRes; i++) { Residencia res = new Residencia( new AreaCasa(),new AreaPiscina()); proj.adicionaRes(res); } System.out.println(proj.condominio.length); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 22 / 33
  • 101. Entrada – Olhando mais de perto E se o que for lido n˜ao for o esperado? import java.util.Scanner; class Projeto { Residencia[] condominio; ... public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.print("Quantas resid^encias h´a no condom´ınio? "); String sTotal = entrada.nextLine(); int nRes = Integer.parseInt(sTotal); Projeto proj = new Projeto(nRes); for (int i=0; i<nRes; i++) { Residencia res = new Residencia( new AreaCasa(),new AreaPiscina()); proj.adicionaRes(res); } System.out.println(proj.condominio.length); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 23 / 33
  • 102. Entrada – Olhando mais de perto E se o que for lido n˜ao for o esperado? Um n˜ao inteiro quando se queria inteiro, por exemplo import java.util.Scanner; class Projeto { Residencia[] condominio; ... public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.print("Quantas resid^encias h´a no condom´ınio? "); String sTotal = entrada.nextLine(); int nRes = Integer.parseInt(sTotal); Projeto proj = new Projeto(nRes); for (int i=0; i<nRes; i++) { Residencia res = new Residencia( new AreaCasa(),new AreaPiscina()); proj.adicionaRes(res); } System.out.println(proj.condominio.length); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 23 / 33
  • 103. Entrada – Olhando mais de perto E se o que for lido n˜ao for o esperado? Um n˜ao inteiro quando se queria inteiro, por exemplo Um erro em tempo de execu¸c˜ao ocorre import java.util.Scanner; class Projeto { Residencia[] condominio; ... public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.print("Quantas resid^encias h´a no condom´ınio? "); String sTotal = entrada.nextLine(); int nRes = Integer.parseInt(sTotal); Projeto proj = new Projeto(nRes); for (int i=0; i<nRes; i++) { Residencia res = new Residencia( new AreaCasa(),new AreaPiscina()); proj.adicionaRes(res); } System.out.println(proj.condominio.length); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 23 / 33
  • 104. Scanner Scanner pode tamb´em ser usado para varrer as informa¸c˜oes em um string Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 24 / 33
  • 105. Scanner Scanner pode tamb´em ser usado para varrer as informa¸c˜oes em um string import java.util.Scanner; class Teste { public static void main(String[] args) { String meuString = "3 tokens 5,3 true"; Scanner sc = new Scanner (meuString); int i = sc.nextInt(); String str = sc.next(); double d = sc.nextDouble(); boolean b = sc.nextBoolean(); System.out.println(i); System.out.println(str); System.out.println(d); System.out.println(b); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 24 / 33
  • 106. Scanner Scanner pode tamb´em ser usado para varrer as informa¸c˜oes em um string Linha de Comando $ java Teste 3 tokens 5.3 true import java.util.Scanner; class Teste { public static void main(String[] args) { String meuString = "3 tokens 5,3 true"; Scanner sc = new Scanner (meuString); int i = sc.nextInt(); String str = sc.next(); double d = sc.nextDouble(); boolean b = sc.nextBoolean(); System.out.println(i); System.out.println(str); System.out.println(d); System.out.println(b); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 24 / 33
  • 107. Scanner Cuidado com floats e doubles! import java.util.Scanner; class Teste { public static void main(String[] args) { String meuString = "3 tokens 5,3 true"; Scanner sc = new Scanner (meuString); int i = sc.nextInt(); String str = sc.next(); double d = sc.nextDouble(); boolean b = sc.nextBoolean(); System.out.println(i); System.out.println(str); System.out.println(d); System.out.println(b); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 25 / 33
  • 108. Scanner Cuidado com floats e doubles! Depender˜ao do locale instalado no computador import java.util.Scanner; class Teste { public static void main(String[] args) { String meuString = "3 tokens 5,3 true"; Scanner sc = new Scanner (meuString); int i = sc.nextInt(); String str = sc.next(); double d = sc.nextDouble(); boolean b = sc.nextBoolean(); System.out.println(i); System.out.println(str); System.out.println(d); System.out.println(b); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 25 / 33
  • 109. Busca Sequencial Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 26 / 33
  • 110. Busca em Arranjo Suponha que temos um arranjo de inteiros Como fazemos para verificar se um determinado n´umero est´a l´a? Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 27 / 33
  • 111. Busca em Arranjo Suponha que temos um arranjo de inteiros Como fazemos para verificar se um determinado n´umero est´a l´a? Varremos o arranjo, da esquerda para a direita Se acharmos o n´umero, ent˜ao ele est´a no arranjo Se chegarmos ao final do arranjo e n˜ao acharmos, ele n˜ao est´a Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 27 / 33
  • 112. Busca em Arranjo Suponha que temos um arranjo de inteiros Como fazemos para verificar se um determinado n´umero est´a l´a? Varremos o arranjo, da esquerda para a direita Se acharmos o n´umero, ent˜ao ele est´a no arranjo Se chegarmos ao final do arranjo e n˜ao acharmos, ele n˜ao est´a Busca Sequencial! Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 27 / 33
  • 113. Busca em Arranjo Ex: Buscando 15 2 0 12 1 20 2 15 3 23 4 8 5 30 6 Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 28 / 33
  • 114. Busca em Arranjo Ex: Buscando 15 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 28 / 33
  • 115. Busca em Arranjo Ex: Buscando 15 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 28 / 33
  • 116. Busca em Arranjo Ex: Buscando 15 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 28 / 33
  • 117. Busca em Arranjo Ex: Buscando 15 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 28 / 33
  • 118. Busca em Arranjo Ex: Buscando 15 2 0 12 1 20 2 15 3 23 4 8 5 30 6 Encontrou! ´Indice 3 (quarta posi¸c˜ao). Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 28 / 33
  • 119. Busca em Arranjo E o 16? 2 0 12 1 20 2 15 3 23 4 8 5 30 6 Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
  • 120. Busca em Arranjo E o 16? 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
  • 121. Busca em Arranjo E o 16? 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
  • 122. Busca em Arranjo E o 16? 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
  • 123. Busca em Arranjo E o 16? 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
  • 124. Busca em Arranjo E o 16? 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
  • 125. Busca em Arranjo E o 16? 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
  • 126. Busca em Arranjo E o 16? 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
  • 127. Busca em Arranjo E o 16? 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i N˜ao encontrou! Como sabemos? Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
  • 128. Busca em Arranjo E o 16? 2 0 12 1 20 2 15 3 23 4 8 5 30 6 i N˜ao encontrou! Como sabemos? i == 7, ou seja, i == tamanho. Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 29 / 33
  • 129. Busca em Arranjo Ent˜ao... static int buscaSeq(int[] arr, int el) { for (int i=0; i<arr.length; i++) if (arr[i] == el) return(i); return(-1); } public static void main(String[] args) { int[] v = {9, 8, 4, 6, 3, 4}; System.out.println(buscaSeq(v, 4)); System.out.println(buscaSeq(v, 12)); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 30 / 33
  • 130. Busca em Arranjo Ent˜ao... Note que fizemos o m´etodo static static int buscaSeq(int[] arr, int el) { for (int i=0; i<arr.length; i++) if (arr[i] == el) return(i); return(-1); } public static void main(String[] args) { int[] v = {9, 8, 4, 6, 3, 4}; System.out.println(buscaSeq(v, 4)); System.out.println(buscaSeq(v, 12)); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 30 / 33
  • 131. Busca em Arranjo Ent˜ao... Note que fizemos o m´etodo static Ele j´a disp˜oe, em seus parˆametros, de toda a informa¸c˜ao de que precisa para executar static int buscaSeq(int[] arr, int el) { for (int i=0; i<arr.length; i++) if (arr[i] == el) return(i); return(-1); } public static void main(String[] args) { int[] v = {9, 8, 4, 6, 3, 4}; System.out.println(buscaSeq(v, 4)); System.out.println(buscaSeq(v, 12)); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 30 / 33
  • 132. Busca em Arranjo Ent˜ao... Note que fizemos o m´etodo static Ele j´a disp˜oe, em seus parˆametros, de toda a informa¸c˜ao de que precisa para executar N˜ao precisa de nada mais espec´ıfico de cada objeto particular static int buscaSeq(int[] arr, int el) { for (int i=0; i<arr.length; i++) if (arr[i] == el) return(i); return(-1); } public static void main(String[] args) { int[] v = {9, 8, 4, 6, 3, 4}; System.out.println(buscaSeq(v, 4)); System.out.println(buscaSeq(v, 12)); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 30 / 33
  • 133. Busca em Arranjo Ent˜ao... Note que fizemos o m´etodo static Ele j´a disp˜oe, em seus parˆametros, de toda a informa¸c˜ao de que precisa para executar N˜ao precisa de nada mais espec´ıfico de cada objeto particular Sendo static, n˜ao h´a uma c´opia por objeto – poupa mem´oria static int buscaSeq(int[] arr, int el) { for (int i=0; i<arr.length; i++) if (arr[i] == el) return(i); return(-1); } public static void main(String[] args) { int[] v = {9, 8, 4, 6, 3, 4}; System.out.println(buscaSeq(v, 4)); System.out.println(buscaSeq(v, 12)); } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 30 / 33
  • 134. Busca em Arranjo Ent˜ao... Note que fizemos o m´etodo static Ele j´a disp˜oe, em seus parˆametros, de toda a informa¸c˜ao de que precisa para executar N˜ao precisa de nada mais espec´ıfico de cada objeto particular Sendo static, n˜ao h´a uma c´opia por objeto – poupa mem´oria static int buscaSeq(int[] arr, int el) { for (int i=0; i<arr.length; i++) if (arr[i] == el) return(i); return(-1); } public static void main(String[] args) { int[] v = {9, 8, 4, 6, 3, 4}; System.out.println(buscaSeq(v, 4)); System.out.println(buscaSeq(v, 12)); } Sa´ıda $ java Projeto 2 -1 Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 30 / 33
  • 135. Busca em Arranjo Como ficaria a busca com objetos? Ex: busque, no condom´ınio, a primeira casa com piscina de raio 3 Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 31 / 33
  • 136. Busca em Arranjo Como ficaria a busca com objetos? Ex: busque, no condom´ınio, a primeira casa com piscina de raio 3 class Projeto { Residencia[] condominio; ... Projeto(int tam) { condominio = new Residencia[tam]; } int buscaPiscSeq(double raio) { for (int i=0;i<this.condominio.length;i++) if (this.condominio[i].piscina.raio == raio) return(i); return(-1); } ... } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 31 / 33
  • 137. Busca em Arranjo Como ficaria a busca com objetos? Ex: busque, no condom´ınio, a primeira casa com piscina de raio 3 Note que o m´etodo agora n˜ao ´e static, pois efetua a busca no arranjo de condom´ınios do objeto class Projeto { Residencia[] condominio; ... Projeto(int tam) { condominio = new Residencia[tam]; } int buscaPiscSeq(double raio) { for (int i=0;i<this.condominio.length;i++) if (this.condominio[i].piscina.raio == raio) return(i); return(-1); } ... } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 31 / 33
  • 138. Busca em Arranjo class Projeto { Residencia[] condominio; ... Projeto(int tam) { condominio = new Residencia[tam]; } int buscaPiscSeq(double raio) { for (int i=0; i<this.condominio.length; i++) if (this.condominio[i].piscina.raio == raio) return(i); return(-1); } public static void main(String[] args) { Projeto pr = new Projeto(5); for (int i=0; i<pr.condominio.length; i++) { AreaCasa c = new AreaCasa(); AreaPiscina p = new AreaPiscina(i+2); Residencia r = new Residencia(c,p); pr.adicionaRes(r); } System.out.println( pr.buscaPiscSeq(3)); System.out.println( pr.buscaPiscSeq(15)); } } Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 32 / 33
  • 139. Busca em Arranjo class Projeto { Residencia[] condominio; ... Projeto(int tam) { condominio = new Residencia[tam]; } int buscaPiscSeq(double raio) { for (int i=0; i<this.condominio.length; i++) if (this.condominio[i].piscina.raio == raio) return(i); return(-1); } public static void main(String[] args) { Projeto pr = new Projeto(5); for (int i=0; i<pr.condominio.length; i++) { AreaCasa c = new AreaCasa(); AreaPiscina p = new AreaPiscina(i+2); Residencia r = new Residencia(c,p); pr.adicionaRes(r); } System.out.println( pr.buscaPiscSeq(3)); System.out.println( pr.buscaPiscSeq(15)); } } Sa´ıda: $ java Projeto 1 -1 Norton Trevisan Roman Aula 16 – Strings, Entrada e Busca Sequencial 2 de maio de 2020 32 / 33