Обратите внимание, что перед тем, как вы отметите мой вопрос как дубликат, я ссылаюсь на этот вопрос: Как лучше всего проверить, представляет ли строка целое число в Java?
Я пытаюсьпроверять графовые объекты, которые приходят из графового класса, представляющего матрицы смежности.
Я использую расширенный цикл for для итерации по каждому узлу в графе, а затем использую вложенный расширенный цикл for, чтобы затем выполнять итерацию по каждому соединительному ребру от каждого узла к каждому другому узлу.
Дело в том, что я имею дело с некоторыми графами, которые имеют только целочисленные ребра, и некоторыми графами, которые имеют нецелочисленные ребра.
Итак, мне нужно написать метод или серию методов, которые могут проверить, чтобы увидеть, содержит ли каждое ребро в графическом объекте строки, которые можно анализировать как целые числа или нет.
Мой код очень прост и прост, но при использовании примеров графиков, которые должны возвращать false, я получаю только истинное возвращаемое значение.
Мой код выглядит следующим образом:
//method to determine if a string can be parsed as an integer greater than zero
public boolean isInteger(String str)
{
try
{ //if the string can be parsed as an int that's greater than zero...
Integer.parseInt(str);
return true;
}
catch(Exception e)
{
return false;
}
}
//method to traverse all edges in a graph object to identify whether or not all
//edges can be parsed as positive integers representing distances
public void checkParsability()
{
//while positive int edges is true and therefore all edges can be parsed as positive integers
if (positive_int_edges)
{
for (Node n : this.nodeList)
{
for (Edge a : n.getOutgoingEdges())
this.setPositive_int_edges(isInteger(a.getLabel()));
//positive_int_edges = isInteger(a.getLabel());
for (Edge a : n.getIncomingEdges())
this.setPositive_int_edges(isInteger(a.getLabel()));
//positive_int_edges = isInteger(a.getLabel());
}
}
//return positive_int_edges;
}
public boolean isPositive_int_edges() {
return positive_int_edges;
}
public void setPositive_int_edges(boolean positive_int_edges) {
this.positive_int_edges = positive_int_edges;
}
График матрицы смежности выглядит примерно так:
~ val AAA BB C DDD E
Alfa S ~ > ~ 99 fig
Bravo 67 999 -42 3 x ==
Charlie ~ ~ 4 ~ yz 9
Delta 4e 3 22 x ~ !=2
Echo yes ~ ~ ~ d>e 33
это должно возвращать false, но по какой-то причине это всегдавозвращая истину.Любая помощь будет очень цениться.спасибо
Редактировать: positive_int_edges - это логический атрибут объектов моего графа, который я установил в true по умолчанию.Я надеюсь пройти через ряд ребер до тех пор, пока не будет найден первый экземпляр, в котором строка не может быть проанализирована как int, после того, как найден первый экземпляр, я хочу прекратить поиск, так как мне больше не нужно беспокоиться о состоянии оставшихсякрая, которые еще не были пройдены.
Edit # 2 Вот как я пытаюсь вызвать мои методы в своем классе драйверов:
System.out.println("\nthe parsability of graph g after call to parsability method is: \n");
g.checkParsability();
System.out.println(g.isPositive_int_edges());