ING1310 – Introducciуn a la Computaciуn String

Anuncio
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
ING1310 – Introducción a la Computación
String
Carlos Reveco
creveco@dcc.uchile.cl
careveco@miuandes.cl
Facultad de Ingeniería/Universidad de los Andes/Chile
Rev : 227
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
1 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
En esta clase
1
2
3
Repaso clase anterior
Ejercicio Clase 14
Enunciado
Solución
Clase String
Definición
Métodos
4
Ejemplo
5
Ejercicio
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
2 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Repaso clase anterior
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
3 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Arreglos Multidimensionales
• Los arreglos guardan un conjunto de objetos.
• Los arreglos son objetos.
• Por lo tanto, se pueden tener arreglos que guarden arreglos.
• En la declaración se indica cuantas dimensiones tiene el arregl:
int [][][] cubo = new int [10][10][10];
• Se pueden definir arreglos de tantas dimensiones como uno quiera.
boolean [][] arreglo = new boolean [2][];
arreglo [0]= new boolean [3];
arreglo [1]= new boolean [1];
arreglo [2]= new boolean [5];
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
4 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Acceso a elementos
• Para asignar o leer un elemento del arreglo, se debe indicar el índice de
cada dimensión.
• Ejemplos:
Persona [][]
Curso [0][0]
Curso [4][7]
Curso [7][2]
curso = new Persona [10][8];
= new Persona ( " Esteban Trabajos " );
= new Persona ( " Juan Pastor " );
= new Persona ( " Guillermo Puertas " );
int [][] matriz = new int [10][5]
Random rnd = new Random ();
for ( int i =0; i < matriz . length ; i ++){
for ( int k = 0; k < matriz . length [ i ]; k ++){
matriz [ i ][ k ] = rnd . nextInt (10);
}
}
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
5 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Ejercicio Clase 14
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
6 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Ejercicio Clase 14
Enunciado
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
7 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Ejercicio Arreglos: Matriz dentro de otra
Implemente el método:
boolean revisarInclusion(int[][] matriz, int[][] pedazo)
que retorna verdadero si pedazo está incluído en algún lugar de matriz (no
importa cuantas veces esté, con una es suficiente).
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
8 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Ejercicio Clase 14
Solución
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
9 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Solución
public boolean r e v i s a r I n c l u s i o n ( int [][] matriz , int [][] pedazo ) {
for ( int i = 0; i <= matriz . length - pedazo . length ; i ++) {
for ( int j = 0; j <= matriz [0]. length - pedazo [ i ]. length ; j ++) {
boolean encontrada = true ;
for ( int m = 0; m < pedazo . length ; m ++) {
for ( int n = 0; n < pedazo [ m ]. length ; n ++) {
if ( matriz [ i + m ][ j + n ] != pedazo [ m ][ n ])
encontrada = false ;
}
}
if ( encontrada )
return true ;
}
}
return false ;
}
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
10 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Clase String
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
11 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Clase String
Definición
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
12 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Motivación
• Ya hemos mencionado que String es una clase que viene definida en
Java.
• Representa una cadena de carácteres.
• Cada caracter se define con el tipo char
• También pueden interpretarse de forma numérica con valores entre 0 y
255.
• La representación de esos valores está dada por la tabla ASCII.
• Revisaremos algunos métodos útiles que tiene esta clase.
• Para detalles de más métodos revisar la documentación oficial:
http://java.sun.com/javase/6/docs/api/java/lang/String.html
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
13 / 29
000d
001d
002d
003d
004d
005d
006d
007d
008d
009d
010d
011d
012d
013d
014d
015d
016d
017d
018d
019d
020d
021d
022d
023d
024d
025d
026d
027d
028d
029d
030d
031d
032d
033d
034d
035d
036d
␀
␁
␂
␃
␄
␅
␆
␇
␈
␊
␋
␍
␎
␏
␐
␑
␒
␓
␔
␕
␖
␗
␘
␙
␛
␜
␝
␞
␟
␣
!
"
#
$
(nul)
(soh)
(stx)
(etx)
(eot)
(enq)
(ack)
(bel)
(bs)
(tab)
(lf)
(vt)
(np)
(cr)
(so)
(si)
(dle)
(dc1)
(dc2)
(dc3)
(dc4)
(nak)
(syn)
(etb)
(can)
(em)
(eof)
(esc)
037d
038d
039d
040d
041d
042d
043d
044d
045d
046d
047d
048d
049d
050d
051d
052d
053d
054d
055d
056d
057d
058d
059d
060d
061d
062d
063d
064d
065d
066d
067d
068d
069d
070d
071d
072d
073d
%
&
'
(
)
*
+
’
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
074d
075d
076d
077d
078d
079d
080d
081d
082d
083d
084d
085d
086d
087d
088d
089d
090d
091d
092d
093d
094d
095d
096d
097d
098d
099d
100d
101d
102d
103d
104d
105d
106d
107d
108d
109d
110d
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
ˆ
_
‘
a
b
c
d
e
f
g
h
i
j
k
l
m
n
111d
112d
113d
114d
115d
116d
117d
118d
119d
120d
121d
122d
123d
124d
125d
126d
127d
128d
129d
130d
131d
132d
133d
134d
135d
136d
137d
138d
139d
140d
141d
142d
143d
144d
145d
146d
147d
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
˜
␡
e
‚
f
„
...
†
‡
^
%
Š
‹
Œ
Ž
‘
’
“
148d
149d
150d
151d
152d
153d
154d
155d
156d
157d
158d
159d
160d
161d
162d
163d
164d
165d
166d
167d
168d
169d
170d
171d
172d
173d
174d
175d
176d
177d
178d
179d
180d
181d
182d
183d
184d
”
•
–
–~
™
š
›
œ
ž
Ÿ
¡
¢
£
¤
¥
¦
§
¨
©
ª
«
¬
®
¯
°
±
²
³
´
µ
¶
·
¸
185d
186d
187d
188d
189d
190d
191d
192d
193d
194d
195d
196d
197d
198d
199d
200d
201d
202d
203d
204d
205d
206d
207d
208d
209d
210d
211d
212d
213d
214d
215d
216d
217d
218d
219d
220d
221d
¹
º
»
¼
½
¾
¿
À
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
Ð
Ñ
Ò
Ó
Ô
Õ
Ö
×
Ø
Ù
Ú
Û
Ü
Ý
222d
223d
224d
225d
226d
227d
228d
229d
230d
231d
232d
233d
234d
235d
236d
237d
238d
239d
240d
241d
242d
243d
244d
245d
246d
247d
248d
249d
250d
251d
252d
253d
254d
255d
Þ
ß
à
á
â
ã
ä
å
æ
ç
è
é
ê
ë
ì
í
î
ï
ð
ñ
ò
ó
ô
õ
ö
÷
ø
ù
ú
û
ü
ý
þ
ÿ
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Clase String
Métodos
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
15 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Método charAt
• Retorna el caracter en una posición determinada.
• Parámetros → índice de la posición (empiezan desde el 0).
• Retorno → caracter en esa posición.
Ejemplo: Método charAt
String texto = new String ( " ING1310 - UAndes " );
char c1 = texto . charAt (0);
char c2 = texto . charAt (12);
System . out . println ( c1 + " , " + c2 );
• Output1 → I, n.
1
No olviden que los espacios también se cuentan.
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
16 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Método compareTo
• Compara el String con otro de forma lexicográfica.
• Parámetros → otro String con el cual compararse.
• Retorno → diferencia entre el primer caracter distinto encontrado.
• Si son iguales retorna 0.
Ejemplo: Método compareTo
String texto1 = new String ( " Hombre " );
String texto2 = new String ( " Hombro " );
int diff12 = texto1 . compareTo ( texto2 );
int diff21 = texto2 . compareTo ( texto1 );
System . out . println ( diff12 + " , " + diff21 );
• Output → -10, 10.
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
17 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Método equals
• Indica si dos String son iguales.
• Parámetros → otro String con el cual compararse.
• Retorno → true si ambos String tienen el mismo contenido. false
en otro caso.
Ejemplo: Método equals
String texto1 = new String ( " Hombre " );
String texto2 = new String ( " Hombro " );
String texto3 = new String ( " Hombre " );
boolean comp12 = texto1 . equals ( texto2 );
boolean comp13 = texto1 . equals ( texto3 );
System . out . println ( comp12 + " , " + comp13 );
• Output → false, true.
• También existe el método equalsIgnoreCase el cual compara sin
hacer diferencia entre mayúsculas y minúsculas.
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
18 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Método length
• Indica el número de caracteres que forman el texto representado por el
String
• Parámetros → No necesita.
• Retorno → Largo del String.
Ejemplo: Método length
String texto = new String ( " ING1310 - UAndes " );
System . out . println ( " Largo : " + texto . length ());
• Output → Largo: 16.
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
19 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Método substring
• Permite obtener un subconjunto del texto que representa el String.
• Parámetros → Hay distintas versiones.
• (int ini)
• (int ini, int fin) → no incluye al último.
• Retorno → un String que representa el subconjunto.
Ejemplo: Método substring
String texto = new String ( " ING1310 - UAndes " );
String sub1 = texto . substring (10);
String sub2 = texto . substring (10 , 12);
System . out . println ( sub1 + " , " + sub2 );
• Output → UAndes, UA.
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
20 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Método indexOf
• Busca la primera aparición de un cierto texto dentro del String.
• Parámetros → Hay distintas versiones.
• (String text)
• (String text, int ini)
• Retorno → Ubicación del primer caracter del texto buscado.
• Si no encuentra el texto retorna −1.
Ejemplo: Método indexOf
String texto = new String ( " nadie puede nadar " );
int pos1 = texto . indexOf ( " nad " );
int pos2 = texto . indexOf ( " nad " , pos1 + 1);
int pos3 = texto . indexOf ( " nad " , pos2 + 1);
System . out . println ( pos1 + " , " + pos2 + " , " + pos3 );
• Output → 0, 12, -1.
• También existe el método lastIndexOf que busca de derecha a
izquierda.
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
21 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Conversiones
• Muchas veces queremos convertir un String a un número.
• Para eso podemos utilizar los siguientes métodos.
• Son métodos especiales que se llaman directamente desde la clase.
Sintáxis Java: Convertir String
double Double . parseDouble ( String );
int Integer . parseInt ( String );
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
22 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Sintaxis
x.length( )
x.equals(y)
Significado
Nº de caracteres
¿ x es igual a y ?
tipo
int
bool
x.compareTo(y)
0 si x == y
Nº < 0 si x < y
Nº > 0 si x > y
carácter ubicado en
el indice i (desde 0)
int
x.charAt(i)
char
x.indexOf(y)
índice de primer y
en x (-1 si no está)
int
x.indexOf(y,i)
índice de y
en x (a partir de i)
int
C.Reveco
Ejemplo
Ejercicio
Ej: String s=“casa”
s.length( )=4
s.equals(“casa”)=true
s.equals(“Casa”)=false
s.equals(“casa”)=0
s.compareTo(“casas”)<0
s.compareTo(“Casa”)>0
s.charAt(2)=’s’
Facultad de Ingeniería/Universidad de los Andes/Chile
s.charAt(0)=’c’
s.charAt(4) error
s.indexOf(“as”)=1
s.indexOf(“a”)=1
s.indexOf(“hola”)=-1
s.indexOf(“a”,2)=3
ING1310– Clase
16
23 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Métodos que devuelven String (y no modifican String original)
x.substring(i,j)
string con caracteres
s.substring(1,3)
entre índices i y j-1
s.substring(2,3)
x.substring(i)
x.substring(i,x.length())
s.substring(1)
x.concat(y)
concatena x e y
s.concat(“do”)
(añade y al final de x)
s + “do”
x.replace(y,z)
reemplaza todos los
s.replace(‘a’,’e’)
caracteres y por z
x.toUpperCase()
reemplaza minúsculas
s.toUpperCase()
por mayúsculas
x.toLowerCase()
reemplaza mayúsculas
s.toLowerCase()
por minúsculas
x.trim()
elimina espacios al
“ a b “.trim()
comienzo y fin
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
Ejercicio
“as”
“s”
“asa”
“casado”
“cese”
“CASA”
“casa”
“a b”
24 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Ejemplo
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
25 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Enunciado
Ejercicio String: Palindrome
• Hacer una clase método Palindrome, que reciba un String y responda
si verdadero si una palabra es palíndrome.
• Un palíndrome es una palabra, número o frase que se lee igual hacia
adelante que hacia atrás.
boolean palindrome ( String x )
palindrome ( " reconocer " )= true
palindrome ( " anita lava la tina " )= true
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
26 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Respuesta
public boolean palindrome ( String cadena ){
boolean valor = true ;
int i , ind ; String cadena2 = " " ;
for ( int x =0; x < cadena . length (); x ++) {
if ( cadena . charAt ( x ) != ’ ’)
cadena2 += cadena . charAt ( x );
}
cadena = cadena2 ;
ind = cadena . length ();
for ( i = 0 ; i < ( cadena . length ()); i ++){
if ( cadena . substring (i , i +1). equals ( cadena . substri
valor = false ;
break ;
}
ind - -;
}
return valor ;
}
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
27 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Ejercicio
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
28 / 29
Repaso clase anterior
Ejercicio Clase 14
Clase String
Ejemplo
Ejercicio
Ejercicio String: Combinar textos
Hacer una clase llamada Combinacion. La clase debe recibir dos String
en el constructor.
Debe tener métodos para las siguientes acciones:
• Retornar un String formado por la intercalación de las letras de cada
una de las palabras.
• Retornar la cantidad de veces que aparece en total un cierto texto
recibido como parámetro (debe ser la suma de las apariciones en
ambos textos).
• Retornar el resultado de la comparación entre dos substrings de los
textos, recibiendo como parámetro el índice inicial y final (iguales para
ambos textos).
C.Reveco
Facultad de Ingeniería/Universidad de los Andes/Chile
ING1310– Clase
16
29 / 29
Descargar