package 最短路径;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class floyed extends JFrame {
public int map[][];
public int numberofpoint;
public int numberofedge;
public int minnum;
public floyed()
{
this.setSize(300, 400);
this.setVisible(true);
this.setTitle("Floyed algorithm");
Container c=this.getContentPane();
this.setLayout(new FlowLayout(1,5,5));
JTextField tb=new JTextField("B",20);
JTextField tf=new JTextField("F",20);
JTextField t0=new JTextField("numberofpoint",20);
JTextField t00=new JTextField("numberedge",20);
JTextField t1=new JTextField("begin",20);
JTextField t2=new JTextField("final",20);
JTextField t3=new JTextField("length",20);
JTextField t4=new JTextField("最短路径长度",20);
JButton k1=new JButton("collect");
JButton k2=new JButton("count");
JButton k3=new JButton("init");
c.add(tb);c.add(tf);
c.add(t0);c.add(t00);
c.add(t1);c.add(t2);c.add(t3);
c.add(t4);
c.add(k1);c.add(k2);c.add(k3);
k3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
init();
tb.setText("B");
tf.setText("F");
t0.setText("numberofpoint");
t00.setText("numberofedge");
t1.setText("begin");
t2.setText("final");
t3.setText("length");
t4.setText("最短路径");
}
});
tb.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
// TODO 自动生成的方法存根
if(tb.getText().equals("")==true) tb.setText("B");
}
@Override
public void focusGained(FocusEvent e) {
// TODO 自动生成的方法存根
tb.setText("");
}
});
tf.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
// TODO 自动生成的方法存根
if(tf.getText().equals("")==true) tf.setText("F");
}
@Override
public void focusGained(FocusEvent e) {
// TODO 自动生成的方法存根
tf.setText("");
}
});
t0.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
// TODO 自动生成的方法存根
if(t0.getText().equals("")==true) t0.setText("numberofpoint");
}
@Override
public void focusGained(FocusEvent e) {
// TODO 自动生成的方法存根
t0.setText("");
}
});
t00.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
// TODO 自动生成的方法存根
if(t00.getText().equals("")==true) t00.setText("numberofedge");
}
@Override
public void focusGained(FocusEvent e) {
// TODO 自动生成的方法存根
t00.setText("");
}
});
t1.addFocusListener(new FocusListener() {
public void focusLost(FocusEvent e) {
if(t1.getText().equals("")==true) t1.setText("begin");
}
public void focusGained(FocusEvent e) {
t1.setText("");
}
});
t2.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
// TODO 自动生成的方法存根
if(t2.getText().equals("")==true) t2.setText("final");
}
@Override
public void focusGained(FocusEvent e) {
// TODO 自动生成的方法存根
t2.setText("");
}
});
t3.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
// TODO 自动生成的方法存根
if(t3.getText().equals("")==true) t3.setText("length");
}
@Override
public void focusGained(FocusEvent e) {
// TODO 自动生成的方法存根
t3.setText("");
}
});
t4.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
// TODO 自动生成的方法存根
t4.setText("最短路径长度");
}
@Override
public void focusGained(FocusEvent e) {
// TODO 自动生成的方法存根
t4.setText("");
}
});
k1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
int a,b,c;
numberofpoint=Integer.parseInt(t0.getText());
numberofedge=Integer.parseInt(t00.getText());
a=Integer.parseInt(t1.getText());
b=Integer.parseInt(t2.getText());
c=Integer.parseInt(t3.getText());
map[a][b]=c;
}
});
k2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
int kb=Integer.parseInt(tb.getText());
int kf=Integer.parseInt(tf.getText());
for(int i=1;i<=numberofpoint;i++)
{
for(int j=1;j<=numberofpoint;j++)
{
for(int k=1;k<=numberofpoint;k++)
{
if(map[j][k]>map[j][i]+map[i][k])
{
map[j][k]=map[j][i]+map[i][k];
}
}
}
}
minnum=map[kb][kf];
t4.setText(""+minnum);
}
});
init();
}
public void init()
{
map=new int[10000][10000];
for(int i=1;i<=10000;i++)
{
for(int j=1;j<=10000;j++)
{
map[i][j]=9999999;
if(i==j) map[i][j]=0;
}
}
numberofpoint=numberofedge=0;
minnum=9999999;
}
}
出现的问题是,我想通过collect按钮不断收集参数,最终通过count进行最短路径的计算,但是最后的结果是,始终是返回0,或者返回错的值,看不出问题在哪里,求教