Java - problemas al intentar modificar Strings

   
Vista:

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:
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);
 
	}
}
CuentaCifras.java
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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Solucionado

Publicado por Jorge (9 intervenciones) el 17/10/2015 13:35:47
Ya lo he solucionado. Perdón por las molestias soy nuevo en Java. Era un problema con los corchetes y en el 'if' del bucle 'for'.
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 = ""; String cadena3 = cadena;
		for(i=0; i <= cadena.length(); i++){
			if (cadena.charAt(i) == '0'){
				cadena3 = cadena.substring(i+1);
			}
			else{
				cadena2 += cadena3;
				break;}
	}
		return cadena2.length();
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Solucionado

Publicado por xve (261 intervenciones) el 18/10/2015 09:24:03
Gracias por comentarlo Jorge...

Es muy importante tabular bien los códigos, tanto para el que programa, como para el que los tiene que revisar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar