Satnás reside en mi applet

Mikel
31 de Octubre del 2003
Tengo un applet que coge ciertos parametros de su web, (start, stop, error) y los expresa gráficamente en la web como secuencias de colores. He conseguido que funcione bien, pero en la parte de los colores no hace lo que debería, que es colorear la secuencia de verde(1% o menos de error), amarillo (5% o menos de error), azul (10% o menos de error) y rojo(más de 10% de error). El error lo calcula en función del parametro "error" respecto a la distancia, dividiéndolos y dando un porcentaje que luego se pasa a unos if...else if.....else if.....else para sacar los colores. Pues bien, sólo salen el verde y el rojo, es decir, las secuencias de más de 10 % salen rojas y el resto verdes. No entiendo por que no funciona, el if...else creo que está bien construido...en fin que me siento un poco inútil ;). Bueno aquí pego todo el código, el applet puede verse funcionando en http://sindominio.net/~pik/java/data1.html
o en http://sindominio.net/~pik/java/data2.html, el código:

import java.applet.*;
import java.awt.*;
import java.lang.*;

public class drawing extends Applet

{
String [] ids = new String [500];
String [] starts = new String [500];
String [] stops = new String [500];
String [] errors = new String [500];
String Min;
String Max;

public void init ()

{
for (int k =0; k<500; k++)
{
ids [k] = getParameter("ID"+k);
starts [k] =getParameter("start"+k);
stops [k] =getParameter("stop"+k);
errors [k] =getParameter("error"+k);
/*if (ids [k]== null)
break; Check this*/

}
Min= getParameter("Min");
Max= getParameter("Max");

}

public void paint (Graphics g)
{

for (int k =1; k<500; k++)
{

int y1=k*30;
int y2=y1+10;
int y3=y1+20;
int maximum=Integer.parseInt(Max);
int scale=maximum/500;
int x1=((Integer.parseInt(starts[k]))/scale);
int x3;
int x2=((Integer.parseInt(stops[k]))/scale);
if (x1<x2)
{
x1=x1+30;
x2=x2+20;
x3=x2+10;

}
else
{
x1=x1+30;
x2=x2+40;
x3=x2-10;
}
int xValues[] = { x1, x2, x3, x2, x1};
int yValues[] = { y1, y1, y2, y3, y3,};
Polygon polygon1 = new Polygon( xValues, yValues, 5 );
g.drawPolygon ( polygon1 );
int dist=Math.abs(x2-x1);
double error=(Integer.parseInt(errors[k])/dist)*100;
if (error<=1){
g.setColor ( Color.green );}
else if (error<=5){
g.setColor ( Color.yellow );}
else if (error<=10){
g.setColor ( Color.blue );}
else{
g.setColor ( Color.red );}

g.fillPolygon( polygon1 );
int xmin=(Integer.parseInt(Min)/scale)+30;
int xmax=(Integer.parseInt(Max)/scale)+30;
g.setColor ( Color.black );
g.drawLine(xmin, xmin-15, xmax, xmin-15);
g.drawLine(xmin, xmin-15, xmin, xmin-5);
g.drawLine(xmax, xmin-15, xmax, xmin-5);
g.drawString(Min, xmin, xmin-17);
g.drawString(Max, xmax-30, xmin-17);
g.drawString(ids[k], xmax+5, y2);
}
}
}