没明白为什么键盘输入的字符不能匹配数组中的

来源: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]);


}


}

https://img.mukewang.com/climg/642594c009eff82c07830233.jpg

问题描述:


写回答

1回答

好帮手慕小尤

2023-03-31

同学你好,String通过!=进行判断,判断地址是否相同。所以出现无法进行匹配的问题,建议同学使用equals()方法。如下所示:

https://img.mukewang.com/climg/64263e0a09e6268914290387.jpg

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

0 学习 · 9886 问题

查看课程