duda sobre String.

delia
18 de Enero del 2006
hola, tengo una duda sobre un ejercicio.En el ejercicio tengo que pedir un numero,meterlo en una variable de tipo String y devolver el numero en una variable de tipo real, teniendo en cuenta k en la variable de tipo String deberá haber una coma k significa la coma decimal, debiendo tratar a los siguientes numeros como decimales.
la cosa es k no se como hacer lo de la coma decimal, he pensado que quizas podria pedir el numero , y si este es decimal, separarlo o pedirlo por dos lados, y meterlos en dos string diferentes y finalmente unirlos ...bueno nose explicarme...
si me dais alguna idea os lo agradeceria,porque eske tengo k acer unos ejercicios parecidos y si no saco este no puedo sacar los otros...

gracias.

Claudio
18 de Enero del 2006
Te envío esta clase,... espero te ayude.

import java.io.*;
import java.util.StringTokenizer;

public class Decimal
{
public Decimal( )
{
}

public boolean esNegativo( String s )
{
if( Double.parseDouble( s ) < 0 )
return true;

return false;
}

public int parteEntera( String s )
{
StringTokenizer st = new StringTokenizer( s , "." );
int parteEntera = Integer.parseInt( st.nextToken() );

return parteEntera;
}

public double parteDecimal( String s )
{
double d = Double.parseDouble( s );

if( esNegativo( s ) )
{
d = (-1)*d + parteEntera( s );

return d;
}

d = d - parteEntera( s );

return d;
}

public static void main( String args[] ) throws IOException
{
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );

System.out.print(" Ingrese Numero : ");

String str = br.readLine();

Decimal d = new Decimal( );

System.out.println(" Parte Entera = "+d.parteEntera( str ) );

System.out.println(" Parte Decimal = "+d.parteDecimal( str ) );

double numeroOriginal = Math.abs( d.parteEntera( str ) ) + d.parteDecimal( str );

if( d.esNegativo( str ) )
System.out.println(" Numero Original = "+( -1*numeroOriginal ) );
else
System.out.println(" Numero Original = "+numeroOriginal );
}
}

delia
18 de Enero del 2006
la verdad es ke soy novata en esto, y apenas acabo de empezar a programar y hay cosas en ese ejercicio k no entiendo muy bien..me lio un poquito,pues hsa creado varias clases...
muchas gracias aun asi..
voy a ver como lo resuelve ,con ayuda de tu ejercicio...

delia
18 de Enero del 2006
mira, el enunciado del ejercicio es:
Pide por pantalla un número y mételo en una variable de tipo String. Obten ahora el número (en una variable de tipo real) que representa dicho número,teniendo en cuenta que la variable de tipo String deberá haber una coma que signifique la coma decimal, debiendo tratar a los números siguientes como decimales.

yo he exo el ejercicio, pero me da error al convertirlo a una variable de tipo real.mira:
import java.io.*;
public class pract27 {

/**
* @param args
*/
public static void main(String[] args) throws IOException{
InputStreamReader en=new InputStreamReader(System.in);
BufferedReader entrada= new BufferedReader (en);
System.out.print("introduce un numero");
String numero;
numero=entrada.readLine();
int longt=numero.length();
int posicoma=numero.indexOf(',');
String subentero=numero.substring(0,posicoma);
String subdecimal=numero.substring(posicoma);
String ncompleto=subentero+subdecimal;
System.out.println(ncompleto);
double nconvertido=Double.parseDouble(ncompleto);
System.out.println(nconvertido);


}

}

Diego
18 de Enero del 2006
El error se debe a que Java tiene como "coma decimal" al carácter '.' punto, notación típica americana. Por ello la coma no la entiende, y deberías hacer subDecimal=numero.substring(posicoma)+1;
y nCompleto=subentero+"."+subdecimal;. Yo creo que así funcionará. Espero que te sirva.