Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mapb_1990

validação com regex

Recommended Posts

boas.

é o seguinte: tenho um método que pede ao utilizador k insira uma função do 3º grau, mas nao está a validar.

o que queria era criar uma função que testa-se, se o input estava no formato correcto, que retorna-se true ou false.

 

/**
	 * Método que lê uma função do 3º grau, no formato: 
	 * ax^3+bx^2+cx+d. <br /><br />
	 *
	 * Autores: Miguel Borges <br />
	 * Data de criação: 06-01-2009 <br />
	 * Data da última actualização: 06-01-2009 <br />
	 *
	 * @param msg Nome do que lê.
	 */   
	public static String lerFuncao (String msg) {
		Scanner in = new Scanner(System.in);
		String funcao;
		do {
			System.out.println("Insira " + msg + ", no seguinte formato: ax^3+bx^2+cx+d");
			funcao = in.next();
		} while (!checaFuncao(funcao));
		return funcao;
	}

o a,b,c pode ser qualquer numero positivo ou negativo, inteiro ou decimal.

 

o ideal era que se pudesse optar por não inserir os valores de a, b ou c, caso estes sejam 1, ou não inserir o polinómio caso sejam 0.

 

exemplos:

x^3+cx --> neste caso, podia-se omitir pk a=1, b=0 e d=0

 

 

depois, tb precisava de um metodo que recebia a função e que retornar-se um vector com os valores de a,b,c e d

 

alguem ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

boas, ja consegui fazer o metodo que recebe a função e que retornar-se um vector com os valores de a,b,c e d.

 

só me falta validar se o utilizador inseriu a função direita.

 

eu sei k isso se faz com regex, mas não sei fazer. :P :P :P

 

alguem ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

regex = "((\\-|\\+)?(\\d+|\\d+[\u002E|\u002C]\\d+)?x\\^3)?" +

"((\\-|\\+)(\\d+|\\d+[\u002E|\u002C]\\d+)?x\\^2)?" +

"((\\-|\\+)(\\d+|\\d+[\u002E|\u002C]\\d+)?x)?" +

"((\\-|\\+)(\\d+|\\d+[\u002E|\u002C]\\d+)?)?";

 

fiz estr regex, mas tem um problema. kuando nao insiro a 1ª parte da função (ax^3), abrigatóriamente tenho que inserir o sinal nas outras.

 

por exemplo: se inserir 2x^2+4x+65 nao passa, mas se for +2x^2+4x+65, já da.

oro, eu queria que aceita-se com ou sem sinal, caso seja o primeio polinomio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.