Como separar os valores de uma constante ? ( resolvido )

17 respostas
analistaadilson
//Como fazer a leitura da variável  TESTE = M1e2t3a4l5u6r7g8i9c0a1R2o3c4h5a sendo essa variável uma 
//CONSTANTE, separar as letras e armazenar na variável LETRAS, e os numeros na vaiável NUMEROS, depois 
//imprimir tudo.Como ficaria? O código abaixo que fiz é satisfatório?

import java.io.*;

public class METALURGICA
{
	public static void main (String[]args)
	{
		final TESTE;
		int[1..31]VTESTE = new int();
		String LETRAS;
		int NUMEROS;
		
		
		VTESTE = TESTE; //penso em colocar os valores de TESTE em VTESTE para poder manipulá-los
		int [1..31]VTESTE = {M1e2t3a4l5u6r7g8i9c0a1R2o3c4h5a}
		for (int i=0;i>=1<=31;i++)
		{
			if(VTESTE[i] >=0 )
			{ 
				NUMEROS = VTESTE[i]
			}
			else
			{
				LETRAS = VTESTE[i]
			}
		}
		for (int i=0;i>=1<=31;i++)
		{
			System.out.println("As letras são:" + LETRAS );
			System.out.println("Os Numeros são:" + NUMEROS );
			
		}
		Exit(0);
VALEU GENTE ...[color=blue] [/color][color=darkblue] [/color][b]

17 Respostas

T

Se nao me engano tem um comando da classe String que chama charAt, ve se nao tem haver…

Galera, o que significa esse 1…31 ai:

int[1..31]VTESTE = new int();

Abraços

analistaadilson

[b][i]Nobre Tecno,

Eu só coloquei 1…31 dentro do vetor pois, não tenho muita familiaridade com o uso deles. Não sei se está certo, se alguem além de vc, puder fazer uma crítica do meu código para conseguir a separação de valores da constante, eu ficarei grato, pois, estou realmente querendo descobrir…vlw![/b][/i] :lol: [color=red] [/color]

analistaadilson

[i][color=olive] [/color]São os indices dos elementos do vetor VTESTE, coloquei assim, pois, VTESTE=TESTE, e 1…31 seríam os indices do vetor…[/i] 8)

Vini_Fernandes

Cara, segue uma solucao:

public class SeparadorDeLetras {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String teste = "M1e2t3a4l5u6r7g8i9c0a1R2o3c4h5a";
		char [] caracter = teste.toCharArray();
		String LETRAS ="";
		String NUMEROS ="";
		System.out.println((int)'a');
		for (char c : caracter ) {
			if(Character.isDigit(c)){
				NUMEROS += c;
			}
			else{
				LETRAS += c;
			}
		}
		
		System.out.println("Numeros: "+NUMEROS);
		System.out.println("Letras: "+LETRAS);
	}

}
analistaadilson

[i][color=blue] [/color]Po ai, vlw vini, to testando sua solução…Brigaduuu![/i] 8)

analistaadilson
import java.io.*;

public class METALURGICA
{
public static void main (String[]args)
{
final TESTE;
int[1..31]VTESTE = new int();
String LETRAS;
int NUMEROS;


VTESTE = TESTE; //penso em colocar os valores de TESTE em VTESTE para poder manipulá-los
int [1..31]VTESTE = {M1e2t3a4l5u6r7g8i9c0a1R2o3c4h5a}
for (int i=0;i>=1<=31;i++)
{
if(VTESTE[i] >=0 )
{
NUMEROS = VTESTE[i]
}
else
{
LETRAS = VTESTE[i]
}
}
for (int i=0;i>=1<=31;i++)
{
System.out.println("As letras são:" + LETRAS );
System.out.println("Os Numeros são:" + NUMEROS );

}
Exit(0);
analistaadilson

Caro Vini, sua solução compila mas, não roda…deu uns erros de classload do Java lang não encontrados, importei o pacote Java.lang mas, sem sucesso. Vou tentar fazer no Eclipse ou Net Beans amanhã…rs![color=darkblue] [/color]

T
class Metalurgia {
   public static void main(String args[]){
      String str = "abcde123";
	  String Letras = "";
	  String Numeros;
	  
	  char[] str_asc = new char[str.length()];
	  
	  for (int i = 0; i < str.length(); i++){
	    str_asc[i] = str.charAt(i);
	  }
	  
	  for (int i = 0; i < str.length(); i++){
	     if (((int)str_asc[i] >= 97) && ((int)str_asc[i] <= 122)){
		    Letras += str_asc[i];
		 }
		 //Falta add no if acima letras maisculas e add um if para numeros
	  }
	  
	  System.out.print("\n" + Letras);
   }
}

Cara, fiz praticamente o programa inteiro. Basta agora voce fazer o resto, pegar uma tabela ascii e entender o que eu fiz ;)

Se tiver duvida so colocar aqui.

Abraços

hodrigohamalho

BRUCE WAYNE, rodei o código do Vini aqui, rodou tranquilamente nem precisa importar nada.

public class Teste {
	public static void main(String[] args) {

		String teste = "M1e2t3a4l5u6r7g8i9c0a1R2o3c4h5a";   
		char [] caracter = teste.toCharArray();   
		String LETRAS ="";   
		String NUMEROS ="";   
		System.out.println((int)'a');   
		for (char c : caracter ) {   
			if(Character.isDigit(c)){   
				NUMEROS += c;   
			}   
			else{   
				LETRAS += c;   
			}   
		}   

		System.out.println("Numeros: "+NUMEROS);   
		System.out.println("Letras: "+LETRAS);   
	}   

}
analistaadilson

[color=red]Como fazer a leitura da variável TESTE = M1e2t3a4l5u6r7g8i9c0a1R2o3c4h5a sendo essa variável uma
CONSTANTE, separar as letras e armazenar na variável LETRAS, e os numeros na vaiável NUMEROS, depois
imprimir tudo DE FORMA A FICAR ASSIM:
Numeros = 123456789012345
Letras = MetalurgicaRocha

Tecno, gostei muito da sua inteligente solução via AscII, fiz algo mas, não sei se a sintaxe do If tá correta...Como adaptá-lo a essa necessidade acima? Valeu pela ajuda amigo...[/color]

[color=blue]Outra coisinha: Uma constante não tem valor fixo? como vou fazer a separação do que está lá?[/color]

class Metalurgia {  
   public static void main(String args[]){  
      String str = "abcde123";  
      String Letras = "";  
      String Numeros;  
      String Maiusculas;  
      char[] str_asc = new char[str.length()];  
        
      for (int i = 0; i < str.length(); i++){  
        str_asc[i] = str.charAt(i);  
      }  
        
      for (int i = 0; i < str.length(); i++){  
         if (((int)str_asc[i] >= 97) && ((int)str_asc[i] <= 122)){  
            Letras += str_asc[i];  
         }  
         //Falta add no if acima letras maisculas e add um if para numeros  
		 else if (((int)str_asc[i] >= 60) && ((int)str_asc[i] <= 95))
		 {
			Maiusculas += str_asc[i];
		 }
		 
		 else if(((int)str_asc[i] >= 48) && ((int)str_asc[i] <= 57))
		 {
			Numeros += str_asc[i];
		 }
		 
      }  
	  
        
      System.out.print("\n" + Letras);  
   }  
}
analistaadilson

[color=green][b][i]hodrigohamalho,

Cara valeu pela dica, eu naum consegui executar o código, uso prompt pra isso…vo tentar no Eclipse e Net beans pra ve no que dá…vlw![/i][/b][/color]

hodrigohamalho

Hum, verifique a versão do seu javac…
Em questão de solução, a usando a tabela ASCII é interessante, mas a solução que o Vini apresentou é bem mais simples… não precisa ficar consultando a tabela, só usar Objetos.
Use o que já está pronto… não reinvente a roda, a não ser que você esteja estudando e quer saber como funciona…

abraço. :slight_smile:

analistaadilson

[color=orange][b]Hodrigo,

Consegui rodar a classe SeparadorDeLetras no Net Beans! Mas, o Vini, não se ateve ao Fato de a Variável ser uma constante, não deveria ser declarada com a cláusula “final” ??? Então, como faço?
Mas, agradeço a vcs pela ajuda…vlw![/b][/color]

Vini_Fernandes

BRUCE WAYNE, veja a versao do java que voce esta usando! Creio que seja isso! Estou com o Java 6.

ate mais

analistaadilson

[color=green]blz! vou verificar…[/color]

hodrigohamalho

Bruce, não mudaria nada… só colocar final antes de String, lembre-se de declara constantes sempre com final e ela deve estar em maiúsculo.
Veja o código:

public class Teste {
	public static void main(String[] args) {

		final String TESTE = "M1e2t3a4l5u6r7g8i9c0a1R2o3c4h5a";   
		char [] caracter = TESTE.toCharArray();
		// Sempre quando se vai concatenar caracteres, é melhor utilizar StrinBuffer ou StringBuilder
		StringBuffer letras = new StringBuffer();   
		StringBuffer numeros = new StringBuffer();   
		
		for (char c : caracter ) {   
			if(Character.isDigit(c))   
				numeros.append(c);   
			else
				letras.append(c);   
		}
		
		System.out.println("Numeros: "+numeros);   
		System.out.println("Letras: "+letras);   
	}   
}
analistaadilson

[color=brown]Perfeito, problemas solucionados, código simples…vlw Hodrigo, Vini e Cia.![/color]

Criado 10 de julho de 2009
Ultima resposta 14 de jul. de 2009
Respostas 17
Participantes 4