Duvida na hora de colocar "." em string invertido

2 respostas
PePeLeGaL

ola pessoal,

fiz o programa abaixo:

public class Digito
{
	public String inverte(String n)
	{
		int i = n.length(),
			 j = 0,
			 k = 0;
		String s = "",
		                                 sy = "",
				 sk = "";
		i--;
		
		while(i >= 0)
		{
			if(n.charAt(i) == '.')
				sy = sy + (i--);
			
			s = s + n.charAt(i);
			i--;
		}
		
		i=0;
		
		//coloca o ponto(.) no numero string invertido
		//essa parte nao ta funcionando corretamente
		//aqui esta a minha duvida
		if(!sy.equals(""))
		{
			while(i < s.length())
			{
				if( Integer.parseInt( String.valueOf(sy.charAt(j)) ) == i )  //encontra local onde sera colocado o ponto(".")
				{
					while( k < s.length()-i )	//laco para colocar o ponto				
					{
						sk = sk + s.charAt(k);
						k++;
					}
				}
				i++;
			}
		}
		return s;
	}
}

a entrada dele eh a seguinte: “1.544”

o resultado dele dever ser assim: “4.451”

ele esta invertendo a entrada assim: “4451”

mas na hora de colocar o ponto estou com duvida sobre como bolar o algoritmo. A ideia entendi, so nao entendi como faze-lo.

por exemplo, quando eu achar o lugar no string para se colocar o ponto(.)
deve-se fazer uma reestruturacao das posicoes dos numeros. A minha duvida eh nessa hora. Alguem pode me ajudar ?

2 Respostas

cassio

Fiz assim:

public String inverter(String n){
		if(!n.contains(".")){
			System.out.println("Sua string nao possui um ponto...");
			return null;
		}		
		int indexOfDecimalPoint = n.indexOf(".");
		n = n.replace(".", "");
		char[] charArray = null;
		int begin, end;
		char temp;
		charArray = n.toCharArray();
		begin = 0;
		end = (charArray.length) - 1;
		while(begin &lt end){
			temp = charArray[begin];
			charArray[begin] = charArray[end];
			charArray[end] = temp;
			++begin;
			--end;
		}
		String invertida = new String(charArray);
		return invertida.substring(0, indexOfDecimalPoint) + "." + 
			   invertida.substring(indexOfDecimalPoint, n.length());		
	}
PePeLeGaL

valeu cassio :wink:

Criado 14 de abril de 2007
Ultima resposta 14 de abr. de 2007
Respostas 2
Participantes 2