我是Java和StackOverflow的新手,所以请不要吝啬。我真的很感激一些帮助。先谢谢你。
我觉得这很容易,我已经尝试了一百万种不同的方式,但它不起作用。
我正在尝试接收文本文件并将其存储到链接列表中,并且我正在尝试访问此链接列表的第三个节点。出于某种原因,我可以访问第一个节点,然后我可以使用getNext()命令转到下一个节点,但是当我尝试使用getNext()去第三个节点时,它会继续返回第二个节点。所以它不会去第三个节点。 我只是错过了一些关键概念吗?如果您需要更多信息,请告知我们。
正在接收的文本文件是: 五 A B C D E A B //这是我想要的线 B C. B D. C D. C E. D E
以下是我的代码的一部分:
public static void main(String[] args) throws IOException{
/**
* Check whether the user types the command correctly
*/
if (args.length != 1)
{
System.out.println("Invalid input");
System.out.println(args.length);
System.exit(1);
}
String filename = args[0];
Scanner input = new Scanner (new File(filename));
LinkedList<String> linkedList= new LinkedList<String>();
while(input.hasNext())
{
linkedList.addToRear(input.nextLine());
}
LinearNode<String> link= linkedList.firstLink;
String temp = " ";
link.getNext();
temp = (String)link.getElement();
String[] numofVerticesArray = temp.split(" ");
int numOfVertices = Integer.parseInt(numofVerticesArray[0]);
int lineNumber = 1;
String [] arrayOfVertices;
LinearNode<String> secondLine = link;
String temp2;
for (int i=0; i <= lineNumber; i++)
{
secondLine = link.getNext();
}
lineNumber = 2;
temp2 = (String)secondLine.getElement();
arrayOfVertices = temp2.split(" ");
int[][] adjMatrix = new int[numOfVertices][numOfVertices];
LinearNode<String> edgeLine = link;
String [] arrayOfEdge;
int rowCount = 0;
int columnCount = 0;
String temp3;
lineNumber = 2;
for (int i=0; i <= lineNumber; i++)
{
edgeLine = link.getNext();
System.out.print((String)edgeLine.getElement());
//When this is printed out, the second node's
//content is printed out, not the third node
}
lineNumber++;
temp3 = (String)edgeLine.getElement();
arrayOfEdge = temp3.split(" ");
答案 0 :(得分:4)
你继续要求LinkedList中的第二个元素。
edgeLine = link.getNext();
将LinkedList链接的第二个元素的值设置为edgeLine
,然后循环并执行相同的操作,然后一遍又一遍地重复此操作。
尝试
edgeLine = edgeLine.getNext();
这将继续前进。
答案 1 :(得分:0)
您对link
变量的唯一分配是:link= linkedList.firstLink;
。你永远不会为它分配任何其他东西。因此,调用link.getNext()
将始终返回相同的节点,即第二个节点。 link
不是迭代器,因此您无法调用getNext()
并在链表中前进。