我有一个使用节点的链表。我让它按字母顺序打印出来,但现在我试图打印出名字以用户要求的某个字母开头的人。例如:打印出所有名字以“A”开头的人。我确信这不是我目前所拥有的最好的方法,但我只是在尝试不同的东西,而且我对链表还很陌生。非常感谢任何提示或建议或提示。
这是我认为可能有用的东西:
public void findSameStartingLetter(BigNode front, String letter) {
BigNode curr;
curr = front;
String name;
name = curr.dataitems;
String d;
// char c;
while (curr.next != null){
d = name.substring(0, 1);
if (d.equals(letter)) {
System.out.println(d);
curr = curr.next;
// for(int i=0; i < 1; i++) {
// c = letter.charAt(i);
// }
}
}
}
最佳答案
看起来您需要读取循环内节点上的人员姓名,而不是读取名字然后不再为该变量赋值。
您还应该检查当前节点是否为空,而不是下一个节点。如果您检查下一个,您将错过列表中的姓氏。
此外,请确保列表上的指针移动是在 if 之外完成的,因为我们要检查下一个节点而不管名称是什么。
抛开逻辑不谈,看来你对java有点不适应。要清理您的示例,您可以使用 java 功能在一行上删除和分配值。
此外,Java 的字符串有一个 startWith 方法,而不是做一个子字符串并比较子字符串,它也应该做这个技巧。干得好!
public void findSameStartingLetter( BigNode front, String letter )
{
BigNode curr = front;
while( curr != null )
{
String name = curr.dataitems;
if( name.startsWith( letter ) )
{
System.out.println( name );
}
curr = curr.next;
}
}
关于java - 从链接列表中选择某些字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7772169/