Search code examples
javaarraysnodes

program prints only last element in array


Why does my program only prints the last element when stored in the array, but when n.getAdjacentNodes().get(p) is printed in the list individually everything works fine. Why doesn't it print the first element?

OUTPUT ex: see output, why doesn't it print 386.18 instead of 381.42

Also can someone help me to print all the node values in the array.

double[][] dist = new double[10][10];
        for (Node n: nodes) {
            System.out.println("");
            for (Node p: n.getAdjacentNodes().keySet()){
                System.out.print("" + n.getName() + " to  " + p.getName() + ": " + String.format("%.2f", n.getAdjacentNodes().get(p)));
                System.out.print("     ");
                //print individually
                System.out.println(n.getAdjacentNodes().get(p));
                
                dist[0][1] = n.getAdjacentNodes().get(p);
               
            }
        }
        //Prints only last element
        System.out.println(Arrays.deepToString(dist).replace("], ", "]\n").replace("[[", "[").replace("]]", "]"));

Solution

  • double[][] dist = new double[10][10];
    
    int x = 0, y = 0;
    
    
        for (Node n: nodes) {
            System.out.println("");
            for (Node p: n.getAdjacentNodes().keySet()){
                System.out.print("" + n.getName() + " to  " + p.getName() + ": " + String.format("%.2f", n.getAdjacentNodes().get(p)));
                System.out.print("     ");
                //print individually
                System.out.println(n.getAdjacentNodes().get(p));
                
                dist[x++][y++] = n.getAdjacentNodes().get(p);
               
            }
        }
        //Prints only last element
        System.out.println(Arrays.deepToString(dist).replace("], ", "]\n").replace("[[", "[").replace("]]", "]"));