我怎样才能将文件 Reader 输入保存到数组中,然后制作图形 [Java]?(高手问题,自己测试)

How can i save File Reader input in Array and then make a Graphic [Java]?(Question for Pros, test yourself)

我试图从 "input1.txt" 文件中输入一些数字到 Java 中,将它们保存在 3 个数组中并用这些数字为图形创建一个顶点,但它不起作用。它 returns 错误 "Compute launch button tooltip" 。你能帮帮我吗?

class GraphPanel extends JFrame {


private static final long serialVersionUID = 1L;

    UGraph x;

Graphic 的构造函数

    public GraphPanel(UGraph x) {
        setTitle("Graph");
        setSize(1500,1500);
        setResizable(true);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.x=x;

    }

构建图表

    public void paint(Graphics graphic) {
        int knots=x.KnotenList.size() , kants=x.KantenList.size();

        graphic.setColor(Color.RED);

        for(int i=0;i<knots;++i) {//malen der Knoten

            graphic.fillOval(x.KnotenList.get(i).x, x.KnotenList.get(i).y, 8, 8);

        }

        graphic.setColor(Color.BLACK);
        int fromID,toID;
        GKnote from,to;

        for(int i=0;i<kants;++i) {//malen der Kanten

            fromID= x.KantenList.get(i).fromID;
            toID = x.KantenList.get(i).toID;

            from=x.getKnote(fromID);
            to=x.getKnote(toID);

            graphic.drawLine(from.x+4, from.y+4, to.x+4, to.y+4);

        }


    }

主要功能

    public static void main(String[] args) throws IOException {

        FileReader in = null;

        //UGraph g=new UGraph();
        int [] idlist= new int [100];
        int [] xlist= new int [100];
        int [] ylist= new int [100];
        int insgesamtpunkte=0;

文件输入及出错位置

         try {
             in = new FileReader("input1.txt");

             int tmp=0,satind=1,spaceanzahl=0,gfid=0,gfx=0,gfy=0;
             char c;

             while ((c = (char) in.read()) != ';') {


                if(c>='0' && c<='9') {//constructs a Number
                  tmp+=c-'0';
                  tmp*=10;
                }

                else if(c==' ') {
                  tmp/=10;

                  switch(satind++) {
                    case 1: gfid=tmp;
                    case 2: gfx=tmp;
                    case 3: gfy=tmp;
                  }
                  tmp=0;
                  if(++spaceanzahl==3) {

                      //System.out.println(gfid+"|"+gfx+"|"+gfy);

                      //Saving Ints in Arrays

                      idlist[insgesamtpunkte]=gfid;
                      xlist[insgesamtpunkte]=gfx;
                      ylist[insgesamtpunkte++]=gfy;

                      spaceanzahl=0;
                      satind=1;
                      tmp=0;

                      while ((c = (char) in.read()) == ' ') if(c==';') break;

                      if(c>='0' && c<='9') {//constructs a Number
                          tmp+=c-'0';
                          tmp*=10;
                        }
                    }



                }


             }

          }
         finally {
             if (in != null) {
                in.close();
             }
          }

从数组中添加顶点

        for(int i=0;i<insgesamtpunkte;++i) 
            g.addKnote(idlist[i],xlist[i],ylist[i]);

手动添加顶点和边

         g.addKnote(32,223,341);
         g.addKante(2, 14, 12);
         g.addKante(3, 14, 32);

制作图形

         new GraphPanel(g);


    }

}

文件内容为

14 321 544 12 443 234 ;

您可以使用 java 8+ 很好地读取来自文件的输入,如下所示:

 int numbers[] = Files.lines(Paths.get("input1.txt"))
            .map(line -> line.split(" "))
            .flatMap(Arrays::stream)
            .mapToInt(Integer::parseInt)
            .toArray();

现在 numbers 数组包含输入文件中的所有整数。你可以用它来创建你需要的3个数组。