Nem sequer entra no ciclo

9 respostas
Alkamavo

Boas pessoal...
tenho o codigo abaixo, o objectivo é deste codigo é que dada uma parabola ele me calcula os n+1 pontos no intervalo de x1=limite inferior e x2=limite superior e me devolva um vector com os n+1 pontos calculados..

as contas estao feitas ....mas ao testar....n sei k se passa o cara nem seker entra no while....

o metodo plot é onde esta o problema..

package poo;

public class Parabola {
	private double a;
	private double b;
	private double c;

	public Parabola(double a, double b, double c) {
		assert a != 0;
		this.a = a;
		this.b = b;
		this.c = c;
	}

	Parabola(double a) {
		assert a != 0;
		this.a = a;

	}

	public double getA() {
		return a;
	}

	public void setA(double a) {
		this.a = a;
	}

	public double getB() {
		return b;
	}

	public void setB(double b) {
		this.b = b;
	}

	public double getC() {
		return c;
	}

	public void setC(double c) {
		this.c = c;
	}

	public double coefficient(int aux) {
		double xptzebra = 0;

		assert (aux >= 0);
		if (aux > 2) {
			return 0;
		} else if (aux == 2) {
			xptzebra = a;
		}
		if (aux == 1) {
			xptzebra = b;
		} else if (aux == 0) {
			xptzebra = c;
		}
		return xptzebra;

	}

	public double value(double aux) {
		return (aux * (a * aux + b)) + c;

	}

	public int countZeros() {
	
		double delta = 0;
		assert (delta >= 0);

		delta = b * b - 4 * a * c;

		if (delta == 0) {
		return 1;	//System.out.println("A funcã0 tem apenas um Zero");

		} else if (delta > 0) {
			//System.out.println("A funcã0 tem dois um Zero");
			return 2;

		} else
			return 3;
	}

	public double[] zeros() {

		double[] xpto = new double[2];

		// assert (delta >= 0);
		double x1;
		double x2;

		double delta = b * b - 4 * a * c;
		if (delta == 0) {
			xpto[0] = x1 = -b / (2 * a);
			xpto[1] = x2 = -b / (2 * a);

		} 
		else if (delta > 0) {
			x1 = (-b + Math.sqrt(delta)) / (2 * a);
			x2 = (-b - Math.sqrt(delta)) / (2 * a);

			if (x1 > x2) {
				xpto[0] = x2;
				xpto[1] = x1;

			} else if (x1 < x2) {
				xpto[1] = x2;
				xpto[0] = x1;

			}

		}
		else if (delta < 0) {
			xpto = null;
		}
		return xpto;
	}

	public double devivate(double xpto) {
		return 2 * a * xpto + b;
	}

	public double Integral(double x1, double x2) {
		return (a * Math.pow(x2, 3.0)) / 3
				+ (b * Math.pow(x2, 2.0)) / 2 
				+ c* x2
				- 
				(a * Math.pow(x1, 3.0) / 3
				+ (b * Math.pow(x1, 2.0)) / 2 
				+ c * x1);

	}
	
	
	
	 public Point[] plot(double Limit_inferior, double Limit_superior, int n) {
		 Point [] xp=new Point [n];
		 Parabola X=new Parabola(this.a, this.b, this.c);
		
		double inter_iguais=(Limit_superior-Limit_inferior)/n; 
		 while(Limit_inferior<Limit_superior){
			 //int i=(int) inter_iguais;
			 xp[0]=new Point(0, X.value(0));
			 			for(int  j=1; j<xp.length; j++){
			xp[j]=new Point(inter_iguais, X.value(inter_iguais));
			inter_iguais++;
		
		}
      }
		return xp;
}

a main do codigo...

package poo;

import java.util.Scanner;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		task_D();
	}

	

	public static void task_D() {
		Scanner in = new Scanner(System.in);
		
		String aux;
		String aux_b;
		Point[] xpcabra;
		String[] xp;
		String []xpto;
		double a, b, c, l_inf, l_sup;
		int n_interv;
		
		aux = in.nextLine();
		xp = aux.split(" ");
		
while(in.hasNextLine()){

	
	a = Double.parseDouble(xp[0]);
	b = Double.parseDouble(xp[1]);
	c = Double.parseDouble(xp[2]);
	
	Parabola p = new Parabola(a, b, c);

			aux_b = in.nextLine();
			xpto = aux_b.split(" ");
		
					
			l_inf = Double.parseDouble(xpto[0]);
			l_sup = Double.parseDouble(xpto[1]);
			n_interv = Integer.parseInt(xpto[2]);
			
	
			xpcabra = p.plot(l_inf, l_sup, n_interv);
			
	for (int i =0; i<xpcabra.length; i++){
			
				System.out.printf("%.2f ",xpcabra[i]);
				
			}
			System.out.println();
		}

	}

}

aguardo ajuda.....

valeu pessoal

9 Respostas

Andre_Fonseca

qual o erro que acontece? uma das coisas que eu vi é que o contrutor de Point(int,int) no seu código está Point(int,double)

xp[0]=new Point(0, X.value(0));
Alkamavo

O erro é k ele nao executa nada…ou seja nao devolve nada…fica inamimado…
:frowning: :frowning:

peczenyj

O ideal seria vc executar esse código num debugger.

Como isso não se aprende do dia pra noite, sugiro que vc enfie um monte de println(“passei por aqui - 1”) … 2,3,5… e imprima o valor de algumas variaveis. Veja por que o sistema não se comporta da forma como vc espera.

O ideal seria uma suite de testes unitários para cada parte do seu código mas… paciência :confused:

Andre_Fonseca
public Point[] plot(double Limit_inferior, double Limit_superior, int n) {  
          Point [] xp=new Point [n];  
          Parabola X=new Parabola(this.a, this.b, this.c);  
           
         double inter_iguais=(Limit_superior-Limit_inferior)/n;   
          while(Limit_inferior<Limit_superior){  
              //int i=(int) inter_iguais;  
              xp[0]=new Point(0, X.value(0));  
                         for(int  j=1; j><xp.length; j++){  
             xp[j]=new Point(inter_iguais, X.value(inter_iguais));  
             inter_iguais++;  
           
         }  
       }  
         return xp;

Você tá usando java.awt.Point?? ele só aceita os construtores Point(), Point(int x, int y) e Point(Point p)
Você tá usando alguma IDE tipo o Eclipse ou Netbeans? Se estiver ele já vai acusar erro de compilação..

[]´s>

Alkamavo

peczenyj:
O ideal seria vc executar esse código num debugger.

Como isso não se aprende do dia pra noite, sugiro que vc enfie um monte de println(“passei por aqui - 1”) … 2,3,5… e imprima o valor de algumas variaveis. Veja por que o sistema não se comporta da forma como vc espera.

O ideal seria uma suite de testes unitários para cada parte do seu código mas… paciência :/

Nao me passou pela cabeça…manejar com o debugger…
Obrigado pela ideia…e na verdade aprendi a usar o debugger de dia para o dia…n foi preciso esperar a noite…

Alkamavo

André Fonseca:

Você tá usando java.awt.Point?? ele só aceita os construtores Point(), Point(int x, int y) e Point(Point p)
Você tá usando alguma IDE tipo o Eclipse ou Netbeans? Se estiver ele já vai acusar erro de compilação…

[]´s>

tou a usar uma classe Point criada por mim…
o construtor é do tipo Point(double x, double y)…
Tou usando o eclipse e na questao do construtor ele nao da erro…
Nao é ai k ele se comporta mal…

Andre_Fonseca

entendi, tente fazer como o peczenyj falou, se estiver usando o Eclipse coloque um break-point nos laços (while e for) e vai tentando debugar passo a passo para ver o que acontece…

http://www.guj.com.br/posts/list/17684.java

Andre_Fonseca

aqui tem outro link legal

http://hotwork.sourceforge.net/hotwork/manual/eclipse/eclipse-user-guide.html#Rodando_em_modo_Debug

Alkamavo

André Fonseca:
aqui tem outro link legal

http://hotwork.sourceforge.net/hotwork/manual/eclipse/eclipse-user-guide.html#Rodando_em_modo_Debug

valeu…

Criado 8 de março de 2008
Ultima resposta 8 de mar. de 2008
Respostas 9
Participantes 3