
problemas al intentar modificar Strings
Publicado por Jorge (9 intervenciones) el 17/10/2015 13:13:09
Hola tengo un problema que soy incapaz de detectar. He probado a hacer lo mismo en Python y me funciona. Código en Python:
En Java la aplicación funciona perfectamente excepto cuando introduces un 0 en la primera posición del número cuya longitud debe devolver. El programa debe calcular la longitud de una cadena (que es un número introducido por teclado), excepto cuando hay una cero delante del número. Esos ceros deben ser restados a la longitud de la cadena. Aquí dejo el código. Lo he dividido en dos clases porque mi profesor de programación dice que lo hagamos así; pero el problema creo que está en CuentaCifras.java. El resultado del programa cuanto introduces '0123' es 0, pero cuando introduces '123' es 3.
Clase principal
CuentaCifras.java
1
2
3
4
5
6
7
8
9
10
11
12
validAnswer = False
while validAnswer == False:
num = raw_input('Introduce aquí un número sin decimales: ')
try:
num = str(int(num))
validAnswer = True
except:
pass
for i in range(0, len(num) - 1):
if num[i] == 0: num = num[1:]
else: break
print len(num)
En Java la aplicación funciona perfectamente excepto cuando introduces un 0 en la primera posición del número cuya longitud debe devolver. El programa debe calcular la longitud de una cadena (que es un número introducido por teclado), excepto cuando hay una cero delante del número. Esos ceros deben ser restados a la longitud de la cadena. Aquí dejo el código. Lo he dividido en dos clases porque mi profesor de programación dice que lo hagamos así; pero el problema creo que está en CuentaCifras.java. El resultado del programa cuanto introduces '0123' es 0, pero cuando introduces '123' es 3.
Clase principal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.io.*;
public class Ej3_7{
public static void main(String[] args){
System.out.println("Introduce aquí un número sin decimales: ");
String number = "";
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
number = br.readLine();}
catch (Exception e){}
CuentaCifras c = new CuentaCifras();
int length = c.lengthNumber(number);
System.out.printf("El número %s tiene %d cifras.", number, length);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class CuentaCifras{
public int lengthNumber(String cadena){
int i;
String cadena2 = "";
for(i=0; i <= cadena.length(); i++){
if (cadena.charAt(i) == '0'){
cadena = cadena.substring(i+1);
}
else
cadena2 += cadena;
break;}
return cadena2.length();
}
}
Valora esta pregunta


0