我对Java编程非常陌生,只有几个星期,我有这个遍历链表的问题,找到一个匹配名称的狗。我已经尝试了我需要的东西,但我正在努力理解遍历。
注意:我的顶部还有一个public dog head;
变量。
基本上它需要做的是:
Traverse LinkedList查找匹配名称的狗,如果狗没有找到返回null。
public Dog getName(String name) {
Dog name = head;
int index;
while(index > 0) {
index--;
name = name.next;
}
if (name == null)
{
return null
}
return name;
}
答案 0 :(得分:0)
public Dog getName(String name) {
String dogName = name;
String listCurrentValue = listOfDogNames //Add your list of dog names here
While(listOfDogNames.next()){
If (dogName.equals(listCurrentValue)){
//FOUND MATCH
}
Else
//NO MATCH
}
return name;
}
答案 1 :(得分:0)
就像localplutonium所说,字符串不应与==进行比较,而应与.equals()进行比较。另外,我看到你在while循环中使用了索引,但是你永远不会将索引分配给起始值。有一个名为index的int变量,但它没有值,所以不可能减去它。
答案 2 :(得分:0)
我在这段代码中发现了几个美容问题: public Dog getName(String name){ //如果未使用字符串名称参数,那么为什么将其作为参数传递? ???? 狗名=头; int index;
while(index > 0) {
index--;
name = name.next; //name.next should be name.getNext();
}
// this check is redundant and not need it:
// if null return null else return name???
// so you are in fact returning name value no matter what...
if (name == null)
{
return null
}
return name;
}
答案 3 :(得分:0)
这是作业(显然),所以我不能用勺子提供你可以提交的答案,但我可以尝试创建一个有用的,也许教你一些新东西 - 例如使用集合流。< / p>
您可以使用流遍历集合,而不知道或关心集合如何遍历,使用过滤器选择感兴趣的项目然后返回它,如果没有找到类似于以下表达式的表达式,则返回null; / p>
public static Dog getDog(String name) {
// given a collection called dogs
return dogs.stream() // get the collection's stream
.filter(d -> d.getName().equals(name)) // filter on the name text
.findFirst() // find the first match and return it
.orElse(null); // or else return null
}
例如:
import java.util.LinkedList;
import java.util.List;
public class TestDog {
private static List<Dog> dogs = new LinkedList<>();
public static void main(String[] args) {
String[] names = { "Fido", "Bingo", "Yeller", "Pluto", "Lassie", "Cujo", "Fang", "Rowf",
"Scamper", "Lady", "Sparky", "Toto", "Bandid", "Beauregard", "Bowser", "Cerberus",
"Daisy", "Duke", "Fred", "Hellhound", "Rex", "Scamp", "Snoopy" };
for (String name : names) {
dogs.add(new Dog(name));
}
System.out.println(getDog("Toto"));
System.out.println(getDog("Meow"));
}
public static Dog getDog(String name) {
return dogs.stream()
.filter(d -> d.getName().equals(name))
.findFirst()
.orElse(null);
}
}
public class Dog {
private String name;
public Dog(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Dog [name=" + name + "]";
}
}