I am working on a project that has to do with finding the shortest path using from any tow vertices u,v. I have already written a code for most of this but I am having trouble figuring out the actual algorithm to cover all possible paths through the matrices and record all the values that end up at the very end.

So far I have
1. Set up variables so I can gain user input for ordered pairs


I accomplished this by setting up an array for x and an array for y.



2. Next I set up a way to connect x and y ordered pairs to each other to form your edges. I set this up using an array.


The code I have written so far is here:

Java Code:
import java.util.Scanner;
import java.math.*;
public class Pathfinder {
   
    public static void main(String[] args) {
        int[] X = new int[100000];
        int[] Y = new int[100000];
        int[] rowcount = new int[100];
        char[][] edge = new char['0']['0'];
        char[][] edge2 = new char['0']['0'];
        string[] pathtaken = [""];
        int pathtakencount = 0;
        double distance[] = new double[1000.0000];
        int nodenum = 1, nodenum2 = 0, nodenum3 = 0, loopcontinuer = 1, valuechecker = 0;
        int xsquared, ysquared, xdifference, ydifference;
       
        Scanner scan = new Scanner(System.in);
        System.out.println("please enter the value for the beginning node's X value:");
            X[nodenum] = scan.nextInt();
        System.out.println("please enter the value for the beginning node's Y value:");
            Y[nodenum] = scan.nextInt();
        while (loopcontinuer != 0)
        {
            nodenum++;
        System.out.println("please enter the value for node number " + nodenum + "'s X value");
            X[nodenum] = scan.nextInt();
        System.out.println("please enter the value for node number " + nodenum + "'s Y value");
            Y[nodenum] = scan.nextInt();
        System.out.println("would you like to enter another value? Enter \"0\" to end or any other number to continue.");
        System.out.println("Note by ending this sequence, the last term you entered becomes your destination");
            loopcontinuer = scan.nextInt();
        }
           
        for(nodenum2 = 0; nodenum2 < nodenum; nodenum2++)
        {
        nodenum3 = -1;
        while(nodenum3 < nodenum)
        {
            nodenum3++;
            System.out.println("Node" + nodenum3 + ":(" + X[nodenum3] + "," + Y[nodenum3] + ")");
        }
       
        loopcontinuer = 1;
        while(loopcontinuer != 0)
            {
                System.out.println("Type in the nodes that node " + nodenum2 + " is connected to");
                System.out.println("Please press enter between each input to connect them");
                valuechecker = scan.nextInt();
                if (valuechecker < 0 || valuechecker > nodenum )
                {
                    System.out.println("Invalid input node entered not found!");
                }
                else if(valuechecker == nodenum2)
                {
                    System.out.println("loops are not allowed!");
                }
                else
                {
                    edge[nodenum2][valuechecker] = '1';
                    edge[valuechecker][nodenum2] = '1';
                }
                System.out.println("Would you like to add another edge to node" + nodenum2 + "?");
                System.out.println("Enter \"0\" if you do not, or any other number if you do");
                loopcontinuer = scan.nextInt();
            }   
        }
        for(nodenum2 = 0; nodenum2 < nodenum; nodenum2++)
        {
            rowcount[nodenum2] = 0;
            for(nodenum3 = 0; nodenum3 < nodenum; nodenum3++)
            {
                edge2[nodenum2][nodenum3] = edge[nodenum2][nodenum3];
                if(edge[nodenum2][nodenum3] = '1')
                {
                    rowcount[nodenum2]++;
                }
            }
        while (rowcount[0] !=0)
        {   
            nodenum2 = 0;
            while(edge2[0][nodenum2] != '1' || nodenum2 > nodenum)
            {
                nodenum2++;
            }
            if (edge2[0][nodenum2] == '1')
            {
            pathtaken[pathtakencount] = ("node: 0, node: " + nodenum2);
            xdistance = (x[0] - x[nodenum2]);
            ydistance = (y[0] - y[nodenum2]);
            xsquared = Math.pow(xdistance, 2);
            ysquared = Math.pow(ydistance, 2);
            distance[pathtakencount] = Math.sqrt((xsquared + ysquared));
            edge2[0][nodenum2] == '0';
              edge2[nodenum2][0] == '0';
            }
            if (nodenum2 == nodenum)
            {
                pathtakencount++;
            }

            while (rowcount[nodenum2] > 0)
            {
               
            }

        }
       
        }
       }   
}
If anyone can give me suggestions, I'll really appreciate it.