Я хочу, чтобы найти все циклы в графике и использование этого решения Finding all cycles in undirected graphsразница между различными декларациями массива в Java
алгоритма работает нормально, но я хочу передать двумерный массив в качестве аргумента, но приходит в задаче:
данный граф объявлен как
static int[][] graph =
{
{1, 7}, {1, 8}, {7, 8}, {2, 3},
{3, 4}, {6, 4},
{7, 6}, {8, 7}
};
и она работает, но я использовал
int[][] intGraph = new int[500][4];
.....
intGraph[j][0] = Integer.parseInt(edge[i]);
intGraph[j][1] = Integer.parseInt(edge[i+1]);
intGraph[j][2] = Integer.parseInt(edge[i+2]);
....
оба значения массива я могу Хороший доступ через arrayname[x][y]
, но когда я пытаюсь передать его в качестве аргумента в: (все алгоритма в ссылке выше)
public GraphCycleFinder(int[][] graphs) {
graph = graphs;
for (int i = 0; i < graph.length; i++){
System.out.println(i); //added to check itterations
for (int j = 0; j < graph[i].length; j++)
{
//System.out.print(graph[i][j]);
findNewCycles(new int[] {graph[i][j]});
}
}
Я не получить никакого результата, нет ошибок , Когда я печатаю значения i (чтобы проверить, насколько далеко он итерации), он дает мне 0, когда он проходит через мой массив (но должен быть от 0 до 500), но печатает от 0 до длины массива этого жестко запрограммированного массива.
Я полагаю, что есть что-то с признаниями массива, потому что я попытался
int[][] intGraph;
, а затем положить значения как
intGraph[j][0] = Integer.parseInt(edge[i]);
, но я получил java.lang.NullPointerException
Любые идеи?
P.s. извините, если слишком глупый вопрос, я новичок в java.
UPDATE
Проблема не с описания массива. Я прокомментировал findNewCycles(new int[] {graph[i][j]});
, и циклы bouth дали необходимый результат. Вероятно, метод findNewCycles
в этом алгоритме не может справиться с этим большим массивом. :(хотя только 200 вершин и 500 ребер. Не так много.
Похоже, что либо 'edge', либо' edge [i] 'являются' null', но мы не можем сказать без трассировки стека. – CodeBlind
Вы инициализировали 'intGraph [j]'? Массивы на Java - это объекты, поэтому 'int [] []' - это массив объектов, каждый из которых является массивом целочисленных примитивов. – shoover
Этот массив intGraph заполнен значениями, поэтому я полагаю, что край или край [i] не равен NULL. И я попытаюсь выяснить, как получить трассировку стека: D –