Java 如何使用扫描仪浏览ArrayList并找到ArrayList中的内容?
我正在制作一个汽车的ArrayList,我在如何迭代ArrayList并使用扫描仪打印我所要求的内容时遇到了问题。 示例:我正在列表中查找一辆奥迪,我希望它查看ArrayList,如果它在ArrayList中,请打印“我们有一辆%s。” 这就是我到目前为止所做的: 公共班机{Java 如何使用扫描仪浏览ArrayList并找到ArrayList中的内容?,java,arraylist,Java,Arraylist,我正在制作一个汽车的ArrayList,我在如何迭代ArrayList并使用扫描仪打印我所要求的内容时遇到了问题。 示例:我正在列表中查找一辆奥迪,我希望它查看ArrayList,如果它在ArrayList中,请打印“我们有一辆%s。” 这就是我到目前为止所做的: 公共班机{ public static void main(String[] args) { ArrayList<String> car = new ArrayList<>(); car.add
public static void main(String[] args) {
ArrayList<String> car = new ArrayList<>();
car.add("Audi");
car.add("Chevrolet");
car.add("Dodge");
car.add("Ford");
car.add("Honda");
car.add("Toyota");
car.add("Volkswagen");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
for(String name: car)
{
if(name == sc){
System.out.printf("We have a %s.", sc);
}
}
}
publicstaticvoidmain(字符串[]args){
ArrayList car=新的ArrayList();
汽车。添加(“奥迪”);
汽车。添加(“雪佛兰”);
添加(“道奇”);
汽车。添加(“福特”);
加上(“本田”);
加上(“丰田”);
汽车。添加(“大众”);
扫描仪sc=新的扫描仪(System.in);
字符串str=sc.nextLine();
for(字符串名称:car)
{
if(name==sc){
System.out.printf(“我们有一个%s.”,sc);
}
}
}
}我认为这里真正的问题是你对
扫描仪的功能没有清晰的理解
扫描器
从流中读取字符(例如System.in
),并将其转换为各种值;e、 整数、浮点数、字符串等。基本模式是:
- 调用
hasNextXXX
测试是否有XXX
可读取
- 调用
nextXXX
读取XXX
因此,您正试图从扫描仪
获取汽车制造商的名称。假设汽车制造商的名称中没有空格,您正在读取的是一个以空格分隔的标记。读取令牌的方法是Scanner::next
。它以字符串
的形式返回标记,并删除任何前导或尾随空格
旁白:String::nextLine
也可以使用,只是它返回完整的一行,其中包含用户在名称2之前或之后输入的所有空格。如果用户输入(例如)Ford
,后面有空格,则该空格与car
列表中的值不匹配。要解决这一问题,您需要执行以下操作:
String str = sc.nextLine().trim(); // 'trim' removes leading and
// trailing whitespace; e.g. SP,
// TAB, CR and NL characters.
一旦将名称设置为字符串
,就应该String::equals
将其与其他字符串进行比较。在几乎所有情况下,使用==
比较字符串都是不正确的;看
为了更深入地理解扫描仪
,我建议您花点时间阅读
您的代码不执行上述操作。相反,它读取一行(即str=sc.nextLine()
)而不使用它。然后它使用=
测试扫描器
是否与列表中的每个字符串
相等。这失败了,因为扫描仪
不是字符串
旁白:在Java中,引用类型(即对象)的==
表示“这是同一个对象吗?”
1-另一种可能是您没有足够仔细地阅读编写的代码
2-。。。除了行分隔符序列之外;i、 e.CR、NL或CR+NL。这将由下一行自动删除:有关详细信息,请参阅javadocs。这是否回答了您的问题?字符串不能等于扫描仪。它可以等于您用扫描仪读取的字符串。提示:列表有一个contains()方法。如果(name==sc){
,则不是,您试图将字符串等同于扫描对象,因此这在逻辑上或编码上没有意义。您可以使用扫描程序从文件或用户中提取字符串,然后使用该字符串执行操作。谢谢大家的帮助。我是java新手lol