Problema Gracias por la respuesta pero no funciono ya que dibuja la primera linea y la que sigue la tira al infinito.
El problema esta justamente en las i+1 creo, pero no se que hacer porque los parametros para dibujar una linea deben ser x1,y1,x2,y2.. por lo tanto deben ir los ultimos MATRIZN[][], pero deben incrementarse de alguna forma o solo se dibujara un punto, te envio el codigo completo para que lo aprecies mejor.
--------------------------------------------------------------------------
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.JFrame;
public class mnudos{
//Propiedades de la clase mnudos
BufferedReader stdin; //Objeto stdin
int arg1, arg2;//Argumentos de entrada
int K, P, i;//Variables
int argumen1, argumen2;
boolean error;//Demarcador de errores
int [][] MATRIZN = new int[50][50];
//Contructor
public mnudos(int ar1, int ar2, boolean e){
stdin = new BufferedReader ( new InputStreamReader(System.in));
arg1=ar1;
arg2=ar2;
error=e;
}
//Validacion de argumentos
public void ingreso() throws IOException {
do{
error=false;
try{
System.out.println("****************************** ***********************************************");
System.out.println("*************************** METODO DE LOS NUDOS ****************************");
System.out.println("****************************** ***********************************************");
System.out.println("\n");
System.out.print("Ingrese el numero de nudos: ");
K = Integer.parseInt(stdin.readLine());
System.out.println("");
System.out.print("Ingrese el numero de barras: ");
P = Integer.parseInt(stdin.readLine());
System.out.println("");
//************************************************** ******************************
//************************************************** ******************************
if(P+3==2*K){
for(i=1;i<=K;i++){
System.out.print("\nIngrese valor para posicion x del nudo " + i + ": ");
arg1 = Integer.parseInt(stdin.readLine());
argumen1=400+arg1;
MATRIZN[i][1]=argumen1;
System.out.print("\nIngrese valor para posicion y del nudo " + i + ": ");
arg2 = Integer.parseInt(stdin.readLine());
argumen2=300-arg2;
MATRIZN[i][2]=argumen2;
}
}
}catch(NumberFormatException e){System.out.println("\nError!! Solo numeros enteros, intente nuevamente..") ;
System.out.println("");
System.out.println("");
error=true;}
}while(error);
}
//************************************************** ******************************
//************************************************** ******************************
public void muestra(){
System.out.println("");
System.out.println("\n\tLas coordenadas de los nudos ingresados son: ");
for(i=1;i<=K;i++){
System.out.println("");
System.out.println("");
System.out.print("\t\tNudo n_" + i + " "+(MATRIZN[i][1]-400)+ "," +((MATRIZN[i][2]-300)*(-1)));
//System.out.println("");
//System.out.println("");
}
}
//************************************************** ******************************
//************************************************** ******************************
public void dibuja(Graphics g){
g.drawLine(100, 300, 700, 300);//Dibujo eje x
int B=109;
for(i=0;i<59;i++){
g.drawString("|",B,304);
B=B+10;
}
g.drawLine(400, 100, 400, 500);//Dibujo eje y
B=114;
for(i=0;i<39;i++){
g.drawString("-",399,B);
B=B+10;
}
for(i=1;i<=K;i++){
g.setColor(Color.blue);
g.drawLine(MATRIZN[i][1], MATRIZN[i][2], MATRIZN[i+1][1], MATRIZN[i+1][2]);
}
}
}
//************************************************** ****************************
MAIN->
-----------
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.JFrame;
public class mainnudos extends JFrame{
static mnudos mismetodos;
public static void main (String [] args) throws IOException {
mismetodos = new mnudos (0, 0, false);
mismetodos.ingreso();
mismetodos.muestra();
mainnudos v = new mainnudos();
v.setTitle("***** METODO DE LOS NUDOS *****");
v.setCursor(new Cursor(Cursor.HAND_CURSOR));
v.setSize(800,600);//Hacemos que la ventana tenga un tamaño
v.setVisible(true);//Hacemos que la ventana se vea
}
public void paint (Graphics g){
super.paint(g);//Dejamos que la ventana se dibuje normalmente
g.setColor (Color.white);
g.fillRect ( 0, 0, 800, 600);
g.setColor (Color.black);//Elige el color para dibujar
mismetodos.dibuja(g);//Mando a llamar al metodo dibuja(g)
}
}
-------------------------------------------------------------------------
Me he cabeceado toda la tarde pero no logro obtener la solucion uff.
Este "metodo de los nudos" debe cumplir la condicion inicial que sale al principio P+3==2*K, siendo K el numero de nudos y P el numero de barras, por lo que si ingresas 3 nudos y 3 barras, y luego como coordenadas de nudos (30,30) ; (100,30) y (100,0) debe dibujarse un triangulo, con un drawline que debe ser (30,30,100,30) luego (100,30,100,0) y finalmente (100,0,30,30) me captas?
Muchas gracias por la ayuda.
Saludos
Última edición por cocke; 13/05/2006 a las 20:28 |