Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

PinkzOrd

transformar string em array

Mensagens Recomendadas

PinkzOrd

Preciso de agarrar em números de uma string(letras e numeros) , dividir por um inteiro, quando o resto for 0 tenho que inseri-los num array (divisores).

o inteiro=n;

a String s;

public void guardaDivisores(String s)
{
	int[] k = new int[10];
	int j=0;
	Scanner sc = new Scanner(s);

try{
	for(int i=0; i<s.length();i++){
		k[i]=sc.nextInt();

	}
}
	catch(Exception a){}

sc.close();


for(int i=0;i<10;i++)
	{
	System.out.print(" "+k[i]); //Teste
	try
	{
	if (n%k[i]==0)
		divisores[j++]=k[i];
		}
		catch(ArithmeticException a)
		{}

	}
}

Tenho isto mas quando a string chega a uma letra pára.

help? :thumbsup:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Começa por tirar as exceções. Não precisas disso para essas situações em particular.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PinkzOrd

Se tiro as exceções, se tiver um 0 na string dá-me logo erro.

Mas o a minha duvida mesmo e como fazer o sc.nextInt() ignorar characters  em vez de parar o ciclo.

ja tentei com o while(s.hasNext())

mas vai dar á mesma coisa.

Alguem tem alguma sugestao please?

por exemplo:

input

n=26

String s = "4 -2 25 abc 2 6";

output

4 -2 25 0 0 0 0 0 0 0                  //teste para que valores entram no k[]

[-2, 0, 0, 0, 0, 0, 0, 0, 0, 0]

no output devia tar

[-2, 2, 0, 0, 0, 0, 0, 0, 0, 0]

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Ele está a lançar exceção qd corres isso?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PinkzOrd

lançar exceção, como assim?

Ele ao dividir por 0, a exceção corre e continua.

Nos characters é que não faz nada, não percebo porque  🤔

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Aconselho-te a aprender Java primeiro. Erros principais:

A exceção ArithmeticException é uma exceção que é suposto nunca ser apanhada.

A exceção feita pelo scanner não é tratada, isso está errado.

Depois de aprenderes Java volta e ajudamos-te. A possível solução que tens aí, não é solução.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Hum... devo ter sido muito bruto, desc, então...

De qq modo não há volta a dar. O que precisas não é tanto como resolver esse problema. É mais: Como é que se programa em Java: Técnicas de programação, especialmente, como usar as exceções em Java.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PinkzOrd

encontrei a solução :

public void guardaDivisores(String s)
{	
	int[] v = new int[10];
	int i=0, j=0;
	boolean cont=true;;
	Scanner scanner = new Scanner(s);
	do{		
		try 
			{
				while(scanner.hasNext())
					v[i++]=scanner.nextInt();
					scanner.close();
					cont=false;
			} 
			catch (InputMismatchException e)
				{
				scanner.next();    
				}
	}while(cont);

	for(i=0;i<10;i++)
	{
		try
		{
			if (n%v[i]==0)
			divisores[j++]=v[i];
		}
		catch(ArithmeticException a)
			{
			}
		}
	}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.