没明白为什么键盘输入的字符不能匹配数组中的
来源:4-5 项目作业
Update39
2023-03-30 22:01:51
package com.ioomc.array;
import java.util.Scanner;
public class TextDemo4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] d= {"北京","海南","杭州","上海","哈尔滨"};
Scanner sc=new Scanner(System.in);
System.out.println("以下地方供旅游参考: 北京 海南 杭州 上海 哈尔滨");
for(int i=0;i<d.length;i++) {
System.out.println("请输入第"+(i+1)+"个旅游目的地");
String s=sc.next();
System.out.println(s);
if(s!=d[0]&s!=d[1]&s!=d[2]&s!=d[3]&s!=d[4]) {
System.out.println("该目的地不在本次旅游目的地的旅游范围以内请重新输入");
i=--i;
continue;
}
}
int number=(int)(Math.random()*5);
System.out.println("随机生成的旅游目的地: "+d[number]);
}
}
问题描述:
1回答
好帮手慕小尤
2023-03-31
同学你好,String通过!=进行判断,判断地址是否相同。所以出现无法进行匹配的问题,建议同学使用equals()方法。如下所示:
public class TextDemo4 { public static void main(String[] args) { // TODO Auto-generated method stub String[] d = { "北京", "海南", "杭州", "上海", "哈尔滨" }; Scanner sc = new Scanner(System.in); System.out.println("以下地方供旅游参考: 北京 海南 杭州 上海 哈尔滨"); for (int i = 0; i < d.length; i++) { System.out.println("请输入第" + (i + 1) + "个旅游目的地"); String s = sc.next(); System.out.println(s); if (!s.equals(d[0]) & !s.equals(d[1]) & !s.equals(d[2]) & !s.equals(d[3]) & !s.equals(d[4])) { System.out.println("该目的地不在本次旅游目的地的旅游范围以内请重新输入"); i = --i; continue; } } int number = (int) (Math.random() * 5); System.out.println("随机生成的旅游目的地: " + d[number]); } }
注:String类中重写了equals()方法,用来比较两个String类型值是否相同,并不是比较的对象地址,所以此时使用equals()方法。这些内容在后面课程会详细讲解,同学这里知道如何使用即可。
祝学习愉快!
相似问题
回答 1
回答 1